It's not a history book or even all that much a book about Lisp, despite its name, but <i>Lisp in Small Pieces</i> incidentally covers a lot of Lisp history. The book at its core is about implementing compilers and interpreters. It starts with something close to the McCarthy meta-evaluator, and the rest of the book iteratively elaborates on why the naive meval is not a practical programming language, somewhat mirroring the evolution of historical Lisp implementations in the process.<p>It dates to the early 90s so it doesn't touch on Clojure or anything recent. The bibliography and citation is excellent.<p>> Literature about Lisp rarely resists that narcissistic pleasure of describing Lisp
in Lisp. This habit began with the first reference manual for Lisp 1.5 [MAE+62] and
has been widely imitated ever since. We'll mention only the following examples
of that practice: (There are many others.) [Rib69], [Gre77], [Que82], [Cay83],
[Cha80], [SJ93], [Rey72], [Gor75], [SS75], [A1178], [McC78b], [Lak80], [Hen80],
[BM82], [CH84], [FW84], [dRS84], [AS85], [R3R86], [Mas86], [Dyb87], [WH88],
[Kes88], [LF88], [Dil88], [Kam90].<p><a href="https://www.amazon.ca/Lisp-Small-Pieces-Christian-Queinnec/dp/0521545668" rel="nofollow">https://www.amazon.ca/Lisp-Small-Pieces-Christian-Queinnec/d...</a>