Introduction: What Is Lisp?
1.1 Origins
Lisp ("LISt Processing") was invented by John McCarthy in 1958 at MIT and described in the 1960 paper *"Recursive Functions of Symbolic Expressions and Their Computation by Machine"*. It's the second-oldest high-level language still in use (after Fortran).
Steve Russell implemented the first interpreter by hand-coding McCarthy's eval function on the IBM 704.
1.2 Ideas Lisp Introduced or Popularized
A uniform syntax for code and data Programs are data structures the language can manipulate Garbage collection
Automatic memory management (invented for Lisp) Conditionals as expressions if/cond return values First-class functions and lambda
Functions as values, from Church's lambda calculus Recursion as a primary tool
Read–Eval–Print Loop: interactive development Dynamic typing Types belong to values, not variables Programs that write programs Interned names as a data type Tree data structures, linked lists
Self-hosting compilers, metacircular evaluators Lisp written in Lisp
Paul Graham's essay *"What Made Lisp Different"* lists nine such ideas, most of which have since spread to mainstream languages.
1.3 The Lisp Family Tree
LISP 1.5 (1962)
├── MacLisp (1966) ──┬── ZetaLisp (Lisp Machines)
│ ├── NIL, Franz Lisp
│ └── Common Lisp (1984 CLtL, 1994 ANSI) ── SBCL, CCL, ECL, ABCL, LispWorks, Allegro, Clasp
├── Interlisp (1966)
├── Scheme (1975, Sussman & Steele) ── R4RS/R5RS/R6RS/R7RS ── Racket, Guile, Chicken, Chez, Gambit, Chibi, Gauche
├── Emacs Lisp (1985)
├── AutoLISP (1986, AutoCAD)
├── Clojure (2007, Rich Hickey) ── ClojureScript, Babashka, ClojureCLR, Jank
└── Modern small Lisps: Fennel (Lua), Janet, Hy (Python), LFE (Erlang VM), PicoLisp, newLISP, Carp, Lux1.4 Why Learn Lisp?
*"Lisp is worth learning for the profound enlightenment experience you will have when you finally get it."* (Eric S. Raymond)
You learn the essence of programming languages: evaluation, environments, closures, and metaprogramming, with minimal syntax in the way.
Practical uses: Emacs customization, Clojure backends, Racket for teaching and DSLs, Common Lisp for long-lived, high-performance systems, and scripting (Babashka, Guile, Fennel).