Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/sminez/picl
PICL Is Crustacean LISP
https://github.com/sminez/picl
interpreter language lisp rust
Last synced: 13 days ago
JSON representation
PICL Is Crustacean LISP
- Host: GitHub
- URL: https://github.com/sminez/picl
- Owner: sminez
- Created: 2018-03-22T10:29:33.000Z (almost 7 years ago)
- Default Branch: master
- Last Pushed: 2018-03-22T14:54:49.000Z (almost 7 years ago)
- Last Synced: 2024-12-02T06:22:42.916Z (2 months ago)
- Topics: interpreter, language, lisp, rust
- Language: Rust
- Size: 9.77 KB
- Stars: 0
- Watchers: 3
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
PICL - PICL Is Crustacean Lisp
==============================A LISP written in Rust.
The idea is to write a core in Rust that is just enough to bootstrap the rest
in PICL itself.### Design ideas wish list
- Simple, consistent API for data manipulation a la Clojure.
- Simple pattern matching (more like destructuring)
- Regex literals `/.*(a|b)/` a la AWK?
- Following the EDN syntax this should be `#r".*(a|b)"` to signify the start
start of a regex as a reader level tag.
- Alternatively, I have always really liked Julia's string macros work
which seems similar to CL's reader macros and Hy's tag macros:
```
(deftag my_tag (expr) `(~expr ~expr))
```
- In Julia they are defined simply as any macro that is named as a single
character followed by `_str`. They then get applied when that character is
prepended to a string literal--> `r"a regex literal", f"x = 3y + 2"`
- The reader/tag macros on the other hand match the EDN idea and are defined
as `(defreader ...)` or `(deftag ...)` and then called like so:--> `#my-tag FORM`
- They allow for longer tag names but not the nice string application.
- ...TBH, why not both?!
- `https://docs.julialang.org/en/stable/manual/metaprogramming/`
- `http://docs.hylang.org/en/stable/language/api.html#deftag`
- `https://gist.github.com/chaitanyagupta/9324402`