(How to Write a (Lisp) Interpreter (In Python)) (2010)
Points and comments are a snapshot, not live.
Peter Norvig implements a Scheme interpreter in 2 pages of Python.
The article demonstrates building Lispy, a Scheme interpreter in Python, in two stages: a calculator subset and a near-full Scheme. It parses S-expressions into nested Python lists and evaluates them with a small eval function plus a standard environment mapping Scheme procedures to Python operators. The final version adds lambda, quote, and set!, enabling closures and variable assignment. The entire interpreter fits in roughly 80 lines.
What commenters are saying
Commenters overwhelmingly praise writing a Lisp interpreter as a formative project. Several recommend alternative starting points: MAL (Make-A-Lisp) for language-agnostic step-by-step guidance, and David Beazley's SICP course. One commenter notes parentheses are intuitive when seen as AST representation rather than grouping. Another shares a 6.5KB x86 Scheme REPL (Ribbit). A minority thread debates whether AI will render such tutorials irrelevant.