Let Over Lambda—50 Years of Lisp

by Doug Hoyte

Let Over Lambda is not about tearing people down or disrespecting people's work. It is about why I love lisp.

Lisp-1 vs Lisp-2. This is a long-running debate which has never been definitively settled. You can prove that by observing that both systems are still in use today in different lisps. I should have been more clear that while I do consider Lisp-2 to be technically superior, I don't think lisps that use Lisp-1 are any less lispy because of this choice. I like Lisp-2 because it provides an extra feature. Why have just one namespace when you can have two? The fact that Lisp-2 avoids certain variable capture problems is mostly incidental. It's having an extra namespace feature that is important.

Hygienic macros. I am dismissive of these macro systems in Chapter 3 but I should have been more clear that I am only against systems that do nothing more than limit or inconvenience macro programmers and then call it progress. Some Scheme systems have theoretically advanced macro systems but I believe the Common Lisp macro system is more suitable for writing useful macros. If you disagree and have examples to back up your opinions, I'd love to hear from you.

Right vs wrong. This language is regrettable. I didn't mean it to pass down absolute judgement for or against something but instead observations about the Common Lisp canon. Lisp-2 is right in Common Lisp but in other languages Lisp-1 might be right. Another example is in chapter 6 where I say that setq being converted back into a setf when used to set a symbol macro is the right thing to do but then go on to confess that the really right thing would be to just remove the redundant setq from Common Lisp.

Top-percentile programmers. No book can make you a top-notch programmer, only study and practice can do that. All books like Let Over Lambda can do are expose you to ideas you otherwise might never be exposed to. Sorry for the overly aggressive marketing language. Getting good at programming is up to you and only you. Good luck.

I hope this clears up any confusion about my message and I apologise to anyone who I might have offended in Let Over Lambda or elsewhere. Also check out the errata page. Several remarks that might seem offensive are actually just phrasing mistakes on my part.