{"id":17245407,"url":"https://github.com/bobbicodes/bobbi-lisp","last_synced_at":"2026-01-20T00:01:32.690Z","repository":{"id":187582611,"uuid":"677181525","full_name":"bobbicodes/bobbi-lisp","owner":"bobbicodes","description":"Interactive Lisp environment for learning Clojure","archived":false,"fork":false,"pushed_at":"2023-09-11T13:43:18.000Z","size":857,"stargazers_count":0,"open_issues_count":9,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-04-06T08:35:15.109Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":"https://bobbicodes.github.io/bobbi-lisp/","language":"JavaScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/bobbicodes.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2023-08-11T00:10:24.000Z","updated_at":"2023-09-11T13:42:38.000Z","dependencies_parsed_at":"2025-04-06T08:34:01.457Z","dependency_job_id":"2ada700e-9959-4dfb-b494-04f1a88362aa","html_url":"https://github.com/bobbicodes/bobbi-lisp","commit_stats":null,"previous_names":["bobbicodes/lisp-tutorial","bobbicodes/bien","bobbicodes/bobbi-lisp"],"tags_count":0,"template":false,"template_full_name":"bobbicodes/web-editor-template","purl":"pkg:github/bobbicodes/bobbi-lisp","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/bobbicodes%2Fbobbi-lisp","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/bobbicodes%2Fbobbi-lisp/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/bobbicodes%2Fbobbi-lisp/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/bobbicodes%2Fbobbi-lisp/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/bobbicodes","download_url":"https://codeload.github.com/bobbicodes/bobbi-lisp/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/bobbicodes%2Fbobbi-lisp/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":28590676,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-01-19T23:59:00.777Z","status":"ssl_error","status_checked_at":"2026-01-19T23:58:54.030Z","response_time":67,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.5:443 state=error: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2024-10-15T06:29:29.494Z","updated_at":"2026-01-20T00:01:32.673Z","avatar_url":"https://github.com/bobbicodes.png","language":"JavaScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"# bobbi-lisp\n\nA browser-based interactive Lisp environment for learning Clojure\n\n## Note:\nDevelopment is moving to Codeberg: https://codeberg.org/bobbicodes/bobbi-lisp. I'll probably stop updating this once I'm sure I'm happy with it.\n\nBobbi-lisp is based on [MAL (Make-a-Lisp)](https://github.com/kanaka/mal), which is a pedagogical Lisp interpreter inspired by Clojure. In a nutshell, this means that it has a set of built-in data structures besides lists, and is designed for functional programming using immutability by default with an `atom` type for controlled mutation. A goal is to support as much of Clojure as possible so it can be used for teaching Clojure.\n\nI'd estimate that the goal is around 50% complete *by quantity*, though the unimplemented half is likely much more involved than the first.\n\n### Differences from Clojure\n\n1. [Lazy sequences](https://github.com/bobbicodes/bien/issues/13) are probably the biggest one.\n\n2. No multimethods/protocols. Chris Houser (Chouser) has created a [sketch](https://gist.github.com/Chouser/6081ea66d144d13e56fc) of protocols which is included but nothing uses them yet.\n\n3. Namespaces. At this point they are not a high priority because this tool is meant for doing simple exercises and not writing production software. However, there are many functions which have slashes in their name to support patterns such as `str/join`, `Character/digit`, etc. \n\n[Zippers](https://www.st.cs.uni-saarland.de/edu/seminare/2005/advanced-fp/docs/huet-zipper.pdf) have been implemented, and are available as a library that can be loaded:\n\n```clojure\n(require \"zip\")\n```\n\nI plan to update this section regularly with detailed descriptions of various features as I make progress.\n\n## Running\n\nIn the project root, run:\n\n```\nnpm install\nnpm run dev\n```\n\n## Testing\n\nThe application has a built-in testing framework based on 185 coding exercises taken from 4clojure and Exercism. To run it, uncomment the last line of `main.js`:\n\n```javascript\ntestExercises()\n```\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fbobbicodes%2Fbobbi-lisp","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fbobbicodes%2Fbobbi-lisp","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fbobbicodes%2Fbobbi-lisp/lists"}