Iota is a lisp interpreter. It is very much a work in progress.
build:
make
run:
./iota
- Interpretation.
- Lisp-1 namespacing.
- Lexical binding.
- Common Lisp-style macros.
- Self-evaluating keywords.
- Some arg parsing.
- Some introspection.
- Decent I/O.
- Booleans (nil serves as false)
- Garbage collection.
- Self-hosted compilation, maybe to some kind of iota bytecode, maybe to javascript, maybe to C, maybe to all three.
- Much more introspection.
- Better arg parsing.
- More (fast) fundamental data structures, like maps/hashtables/dictionaries and resizable vectors.
- Garbage collection.
Big chunks of iota were built based on Peter Michaux’s Scheme from Scratch series, which walks through a C implementation of the metacircular scheme intepreter in SICP. Other stuff was built by reading SICP directly. I am also working through Lisp in Small Pieces, so that will probably show up. Still other stuff I just hacked out. Some of it is broken, see below.
Quasiquote (backquote) doesn’t nest rightbackquote should work now- Variable capture seems to be happening a lot,
maybe because quasiquote is broken, ormaybe just inherent to common lisp macros in a lisp-1.