Minimal Lisp interpreter implementation that I wrote just for fun and to test some things. It only has two data types: atoms and lists. It does not support anything useful but is instead just a list processor.
Only three data types are available:
- Atoms are just pieces of text that are handled as boolean values, numbers or strings depending on the context.
- Lists that are handled as lists of data or function calls depending on the context.
- Functions that can be either anonymous or callable by name.
- Optional M-expression support.
Special atom called nil is treated as an empty/missing value as well as falsy
boolean value. In boolean context every other value than nil is treated as
truthy value.
Make sure you have CMake and C++11 compiler installed.
$ git clone https://github.com/RauliL/bali.git
$ cd bali
$ git submodule update --init
$ mkdir build
$ cd build
$ cmake ..
$ cmake --build .Either run the bali executable with an path to a file that contains Lisp
source code, or just bali without a filename to start REPL.
Numeric: +, -, *, /, =, <, >, <=, >=.
List: length, cons, car, cdr, list, append, for-each, filter,
map.
Boolean: not, and, or, if.
Variables: setq, let.
Functions: apply, defun, lambda, return.
Utilities: quote, load, write.