// the find
robpike/lisp
Toy Lisp 1.5 interpreter
A Go implementation of the Lisp 1.5 interpreter from McCarthy's 1962 manual, written by Rob Pike as a personal exercise in translating page 13 of that book into working code. This is explicitly a toy — no mutation, no I/O beyond interactive REPL, no PROG. For anyone wanting to understand what Lisp actually was before Common Lisp and Scheme existed.
The Go source is small and clean enough to read in an afternoon — the entire eval/apply core is transparent; big.Int arithmetic is a nice touch that lets you run `(fac 100)` without overflow surprises; lexical scoping is a deliberate and honest deviation from the original dynamic scoping, acknowledged upfront; the example session in the README is a genuine tutorial, not a hello-world.
No SET or SETQ means you cannot write stateful programs at all, which rules out most real exercises beyond pure recursion; no PROG means no sequential evaluation, so translating classic Lisp textbook examples often fails; identifiers must be alphanumeric so standard Lisp idioms using `+`, `-`, `*` don't work and muscle memory fights you constantly; with ~1000 stars and Pike's name attached, people will stumble in expecting something teachable at scale — the disclaimer is clear but the gap between expectation and reality is wide.