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, Lux

1.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).