The Dawn of Lisp, or How to Write Eval and Apply in Clojure
summary
Builds a faithful Lisp 1.5 interpreter in Clojure, translating M‑expressions to s‑expressions and implementing eval and apply in Clojure as the two intertwined cores. Uses association lists as the environment and a custom cond macro to match the original syntax, handles dotted pairs by treating non‑lists as second elements, and adds a label for recursion to support recursive lambdas. Includes cons/car/cdr/atom/eq, an ev-list argument evaluator, and a working mapcar example; code is on GitHub.
AI-written summary · about
chapters (21)
- 0:00Intro
- 2:51Outline
- 3:24John McCarthy
- 4:21Alonzo Church
- 5:24McCarthy
- 6:35Steve Russell
- 7:56MIT Programming Manual
- 8:09Universal Lisp Function
- 9:54Maxwell Equations
- 11:29How Eval and Apply Work
- 13:29Memory Locations
- 14:51Memory Cells
- 18:07Closure Rules
- 22:03dotted pairs
- 22:50simple definitions
- 26:11cond
- 27:20perilous
- 28:46sock
- 30:12fcon
- 32:03EVlist
- 38:57Examples








