Experiments in LISP
Here is a summary of the various LISP interpreters and compilers
that I have written in the past 20 years, ranging from a
proof-of-concept tree-walker to a full compiler or a complete
self-hosting LISP system. Given in reverse chronological order.
LISP XV
-
Web page: LISP XV
-
Dialect: subset of LISP 1.5
-
Data types: purely symbolic
-
Type: tree-walking interpreter
-
Language: T3X/0, LISP 1.5
-
OS: Unix, DOS, CP/M, others?
-
Book: -/-
A version of KILO LISP 23 that has been modified to
resemble the original, 1960's LISP 1.5.
KILO LISP 23
-
Web page: KILO LISP 23
-
Dialect: Common-LISP-ish, but LISP-1
-
Data types: purely symbolic
-
Type: tree-walking interpreter
-
Language: T3X/0, LISP
-
OS: Unix, DOS, CP/M, others?
-
Book: -/-
A version of KILO LISP 22 that imports lots of bug fixes
and improvements from MICRO COMMON LISP.
MICRO COMMON LISP
-
Web page: MICRO COMMON LISP
-
Dialect: subset of Common LISP
-
Data types: purely symbolic
-
Type: tree-walking interpreter
-
Language: T3X/0, C, LISP
-
OS: Unix, DOS, CP/M, others?
-
Book: -/-
A version of KILO LISP 22 that is more compatible to
Common LISP: separate namespaces, FUNCTION, FUNCALL, &REST arguments.
KLSYS – A KILO LISP SYSTEM
-
Web page: KLSYS
-
Dialect: Common-LISP-ish, but LISP-1
-
Data types: Scheme, only fixnums, escape-continuations
-
Type: bytecode compiler
-
Language: KLSYS LISP, core in C
-
OS: Unix
-
Book: -/-
A self-hosting LISP compiler and REPL that runs on a virtual machine.
The entire system, including the compiler, is written in LISP. Very
hackable. Based on the techniques explored in the LISP9
compiler.
KILO LISP 22
-
Web page: KILO LISP 22
-
Dialect: Common-LISP-ish, but LISP-1
-
Data types: purely symbolic
-
Type: tree-walking interpreter
-
Language: T3Xr7, LISP
-
OS: Unix, DOS, others?
-
Book: -/-
A T3X version of KILO LISP with command line editing.
KILO LISP
-
Web page: KILO LISP
-
Dialect: Mix of Scheme and LISP
-
Data types: purely symbolic
-
Type: tree-walking interpreter
-
Language: C, T3X/Z, LISP
-
OS: Unix, DOS, CP/M, others?
-
Book: The KILO LISP System
A LISP system with a size in the kilobyte range (13KB on DOS when
compiled with Turbo C).
LISCMP
-
Web page: LISCMP
-
Dialect: dynamically scoped retro LISP
-
Data types: purely symbolic
-
Type: compiler (to C), interpreter (in LISP)
-
Language: LISP (low-level runtime in C)
-
OS: Unix
-
Book: LISP from Nothing
A LISP compiler that is completely written in LISP, including
the reader, printer, and much of the low-level stuff. The only
parts written in C are garbage collection, character I/O, and
argument binding.
LISP9
-
Web page: LISP9
-
Dialect: Scheme-ish, shorter keywords
-
Data types: Scheme, only fixnums, escape-continuations
-
Type: bytecode compiler
-
Language: C, LISP
-
OS: Unix
-
Book: LISP System Implementation
An small, experimental bytecode compiler and virtual machine for
running LISP. Written in C. An improved version of the
S9fES Reimagined compiler.
Scheme 9 from Empty Space, Reimagined
-
Web page: Scheme 9 from Empty Space, Reimagined
-
Dialect: R4RS Scheme
-
Data types: Scheme, bignums, no complex numbers
-
Type: bytecode compiler
-
Language: C, Scheme
-
OS: Unix, Plan 9, others?
-
Book: -/-
A version of S9fES that uses a bytecode compiler and a
VM instead of a tree walker.
Small Scheme Compilers and Interpreters
-
Web page: Various small Scheme compilers/interpreters
-
Dialect: subset of R4RS Scheme
-
Data types: purely symbolic
-
Type: tree-walking interpreters, compilers (to VM, C)
-
Language: C, Scheme
-
OS: Unix
-
Book: Compiling Lambda Calculus
A collection of small interpreters and compilers for a tiny subset
of Scheme, ranging from a tree-walker with deep binding to a compiler
(to C) with shallow binding. All interpreters, compilers, and VMs in
Scheme with some runtime code in C.
Scheme 9 from Empty Space, 3rd Ed.
-
Download: s9fes-2014.tgz
-
Dialect: R4RS Scheme
-
Data types: Scheme, bignums, no complex numbers
-
Type: tree-walking interpreter
-
Language: C, Scheme
-
OS: Unix, Plan 9, others?
-
Book: Scheme 9 from Empty Space
A bug-fixed and extended version of the original (first edition)
S9fES.
Mini Scheme v.3
Originally by Atsushi Moriwaki and Akira KIDA.
-
Download: miniscm3.tar.gz
-
Dialect: subset of R4RS Scheme
-
Data types: subset of Scheme
-
Type: interpreter
-
Language: C, Scheme
-
OS: Unix, DOS, others?
-
Book: -/-
An extended, but still tiny version of the original Mini Scheme.
zenlisp
-
Download: zenlisp.zip
-
Dialect: LISP-1
-
Data types: purely symbolic
-
Type: tree-walking interpreter
-
Language: C, LISP
-
OS: Unix, others?
-
Book: Zen-style Programming
A weird, little, purely symbolic dialect of LISP.
Scheme 9 from Empty Space, First Ed.
-
Download: s9fes-2007.tgz
-
Dialect: R4RS Scheme
-
Data types: subset of Scheme, integer-only, bignums, no call/cc
-
Type: tree-walking interpreter
-
Language: C, Scheme
-
OS: Unix, Plan 9, others?
-
Book: -/-
The interpreter from the first edition of the book, with some
fixes from 2009.