I just finished Doug Hoyte’s Let Over Lamba.
This is considered by many as the perfect follow-up to Paul Graham’s On Lisp and a newcomer to the list of great Lisp hacking books.
If you know your way through the multiple flavours of Lisp this book becomes really interesting. Doug starts by explaining the basics of why one would want macros in a programming language and quickly moves on to extending the basic Common Lisp language with all sorts of new features; including a very sweet chapter implementing Forth macros. Most of the code is based on lexical closures, hence the book’s title.
The opinion-to-fact ratio makes the book a very hard read, though. The usual arrogance towards different language and paradigms (please forget that section on Functional Programming) is somewhat expected but makes it really hard to enjoy the text.
Even though Hoyte’s blind evangelism of Common Lisp is extremely annoying, he is a great hacker and knows how to reuse other people’s work –even if originally written in one of the Lisps he despises.
If you are fairly new to Lisp in general and Common Lisp in particular I don’t think you will find it very interesting. Even if you write code in Clojure -the Lisp most people I know are exposed to these days- I would recommend that you read the fantastic Practical Common Lisp, by Peter Seibel, before trying this one.
What I love most about this book is how it teaches you to think of macros as nothing but functions that return lists. The fact that these lists happen to contain code is irrelevant; macros are still functions.