{"id":15627184,"url":"https://github.com/eggsyntax/vaulisp","last_synced_at":"2025-03-29T17:41:38.001Z","repository":{"id":149783739,"uuid":"380619899","full_name":"eggsyntax/vaulisp","owner":"eggsyntax","description":"Experimenting with a Clojure-based fexpr-centric lisp","archived":false,"fork":false,"pushed_at":"2022-02-24T03:24:08.000Z","size":37,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":2,"default_branch":"master","last_synced_at":"2025-03-24T05:46:42.591Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"Clojure","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"epl-1.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/eggsyntax.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":null,"funding":null,"license":"LICENSE","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":"2021-06-27T00:22:14.000Z","updated_at":"2022-02-24T03:24:12.000Z","dependencies_parsed_at":"2023-06-02T14:15:34.765Z","dependency_job_id":null,"html_url":"https://github.com/eggsyntax/vaulisp","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/eggsyntax%2Fvaulisp","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/eggsyntax%2Fvaulisp/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/eggsyntax%2Fvaulisp/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/eggsyntax%2Fvaulisp/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/eggsyntax","download_url":"https://codeload.github.com/eggsyntax/vaulisp/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":246223275,"owners_count":20743158,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","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-03T10:15:35.788Z","updated_at":"2025-03-29T17:41:37.967Z","avatar_url":"https://github.com/eggsyntax.png","language":"Clojure","funding_links":[],"categories":[],"sub_categories":[],"readme":"# vaulisp\n\nExperimenting with a Clojure-based fexpr-centric lisp\n\n## Installation\n\ngit clone\n\n## Usage\n\n### Start a vaulisp REPL:\n\n    clj -M -m egg.vaulisp\n\nor for a REPL which also starts an [nREPL server](https://nrepl.org/nrepl/0.8/usage/server.html#using-clojure-cli-tools):\n\n    ./vau\n\nComing later: run a vaulisp file or open a repl in the context of such a file.\n\nBasic functions gradually being added. See `egg.vaulisp/global-env` and\n`vausrc/core.vau` for the set of currently-implemented functions. Note that some\n\"functions\" are actually\n[operatives](https://fexpr.blogspot.com/2011/04/fexpr.html) (Paul Shutt's\nterminology), which behave more like macros executed at runtime, in that their\narguments are only evaluated if that's done explicitly in the body of the\noperative. As a result, there are almost no special forms, quoting is entirely\nirrelevant, and language users can easily define operatives like `if` which only\nevaluate some (or none!) of their arguments.\n\n### Inspirations:\n\n* Paul Shutt (see his blog, eg [here](https://fexpr.blogspot.com/2011/04/fexpr.html).\nOr for lots more see his\n[Report on the Kernel Programming Language](ftp://ftp.cs.wpi.edu/pub/techreports/pdf/05-07.pdf)\n(ftp link) or his [dissertation](https://web.wpi.edu/Pubs/ETD/Available/etd-090110-124904/)).\n* Manuel Simoni's blog, The Axis of Eval, eg [this post](https://axisofeval.blogspot.com/2012/03/why-fexprs-part-n-or-lambda-only.html)\n* I've cribbed heavily from [This blog post](http://gliese1337.blogspot.com/2012/04/schrodingers-equation-of-software.html)\nfrom Gliese 1337.\n\nWhile vaulisp isn't inspired by Paul Graham's language [Bel](http://www.paulgraham.com/bel.html),\nit *is* inspired by one of his\n[motivations](https://sep.yimg.com/ty/cdn/paulgraham/bellanguage.txt) for Bel:\n\n\u003e In 1960 John McCarthy described a new type of programming language\n\u003e called Lisp. I say \"new type\" because Lisp represented not just a new\n\u003e language but a new way of describing languages. He defined Lisp by\n\u003e starting with a small set of operators, akin to axioms, and then\n\u003e using them to write an interpreter for the language in itself.\n\u003e [...]\n\u003e So the development of Lisp happened in two parts (though they seem\n\u003e to have been interleaved somewhat): a formal phase, represented by\n\u003e the 1960 paper, and an implementation phase, in which this language\n\u003e was adapted and extended to run on computers. Most of the work, as\n\u003e measured by features, took place in the implementation phase. The\n\u003e Lisp in the 1960 paper, translated into Common Lisp, is only 53 lines\n\u003e of code. It does only as much as it has to in order to interpret\n\u003e expressions. Everything else got added in the implementation phase.\n\u003e [...]\n\u003e Bel is an attempt to answer the question: what happens if, instead of\n\u003e switching from the formal to the implementation phase as soon as\n\u003e possible, you try to delay that switch for as long as possible? If\n\u003e you keep using the axiomatic approach till you have something close\n\u003e to a complete programming language, what axioms do you need, and what\n\u003e does the resulting language look like?\n\nIn other words, like Bel, vaulisp is implemented as much as possible in\nitself. \"As much as possible\" is subjective; for example, I've defined\nthe basic arithmetic operators in Clojure, and I haven't bothered with\ncons cells, instead jumping straight to lists.\n\n## License\n\nCopyright © 2021 Egg Syntax\n\nDistributed under the Eclipse Public License version 1.0.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Feggsyntax%2Fvaulisp","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Feggsyntax%2Fvaulisp","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Feggsyntax%2Fvaulisp/lists"}