I remember Norvig comments on the book were very appraising (1) since he gave it 5 stars.<p>The code of this book is here (3)<p>I read it some twenty years ago. The terminology was new to me, something like fexpresion, nexpresion, ..., the difference being when and how the arguments are evaluated. At the same time I was reading macsima code, to learn how to develop a mathematical symbolic system. The book is mainly about the function eval, closures, and how to construct compiler. In a way is the reverse of 'practical common lisp'. It doesn't discuss any concrete implementation of Lisp, gc, servers, sockets or ffi. It is deep in how evaluation is done in Lisp but lacks a lot of other topics.<p><pre><code> Perhaps a more practical approach to construct an optimizer compiler in Lisp is to study the code of sbcl, how it for example propagate constraints and declarations to optimize the code. Perhaps something like a JIT compiler (like hava hotspot) added to sbcl could be interesting. Also the code of Racket would be another source of interesting ideas, for example (2). Another idea is to study the code of Lush (by Yann LeCun and Leon Bottou)
</code></pre>
(1) <a href="https://hackernewsbooks.com/book/lisp-in-small-pieces/dbb8b5f10c224e021a25eebe39bbb69d" rel="nofollow">https://hackernewsbooks.com/book/lisp-in-small-pieces/dbb8b5...</a><p>(2) <a href="https://blog.racket-lang.org/2021/01/racket-status.html" rel="nofollow">https://blog.racket-lang.org/2021/01/racket-status.html</a><p>(3) <a href="https://pages.lip6.fr/Christian.Queinnec/Books/LiSP-2ndEdition-2006Dec11.tgz" rel="nofollow">https://pages.lip6.fr/Christian.Queinnec/Books/LiSP-2ndEditi...</a>