/apocalisp

MAL(make a lisp) interpreter written in Go.

Primary LanguageGoBSD 2-Clause "Simplified" LicenseBSD-2-Clause

apocaLISP

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.