apocaLISP is a LISP interpreter, a fully compliant implementation of Make a LISP(MAL).
I wrote it mostly to learn more about programming language interpreter internals. The parser was hand-written, not generated by applying Backus-Naur forms.
Currently it supports the following features:
- A dynamic typing system(signed integers, signed floats, strings, booleans, nil, functions and atoms).
- Atoms: a Closure-inspired type to manage state via functional application.
- Eager and lazy evaluation.
- Lexical scoping.
- Higher order functions, including full closure support.
- Loading and interpreting programmes from external files.
- Arbitrary precision numbers.
It leverages two test suites: one inherited from MAL, and one written by me, for when I want to have finer grained control of the executable specification.
At some point I might transform apocaLISP into a full blown shell, replacing /bin/sh
on my workstations.