Tutorial on good Lisp programming style

https://www.cs.umd.edu/%7Enau/cmsc421/norvig-lisp-style.pdf

Expression + Understanding = Communication

A great discussion of style, perhaps the most elusive programming skill. Illustrated across all the levels of abstraction that one finds in Lisp: of data, functions, control, and syntax (the last being essentially unique to Lisp macros). The discussion of control abstraction deals extensively with catch/throw and other primitives in the condition system that are dealt with at greater length in The Common Lisp condition system.

The extended example (starting on page 71) of how to simplify logical expressions is amazingly clear, and really shows the progression from simple functions to embedded languages targeting specific tasks and making them easy to describe and extend to new applications: something that lies at the heart of the Lisp experience.

Much of the advice is actually language-agnostic, even though the concrete examples are in Lisp. Norvig, of course, is the author of Paradigms of artificial intelligence programming, and has made enormous contributions to the theory and practice of Lisp.

(Part of the series An annotated Lisp bibliography.)