This book is really three books in one: an introduction to the Lisp language; a collection of Lisp applications for practical problems, for which one would not normally think of using Lisp; and footnotes (I would call them side-notes) on practically every page, describing the history and idiosyncrasies of Lisp.
Two-thirds of the book (chapters 1, 2, 4 through 8, 10 through 14, and 16 through 22) would be useful in teaching a course on Lisp, starting with an explanation of Lisp syntax, describing Lisp data types, explaining and using macros, and finally describing how to do object-oriented design in Lisp. Unfortunately, there are no end-of-chapter exercises, so the book is probably more useful as a reference for a programming languages course, rather than as the primary textbook. There are three chapters (3, 9, and 15) introducing what the author calls “practicals,” which are applications involving the design of a simple database system, a unit test framework, and a portable pathname library.
The next part of the book addresses practical applications that build on each other, including a binary file parser, an ID3 parser, an MP3 database, a Shoutcast server, an MP3 browser, a FOO language (invented by the author) to Hypertext Markup Language (HTML) interpreter, and finally, a FOO to Lisp compiler. Mixed in with all of this are footnotes on Lisp trivia, history, and some of the author’s opinions, for example, “Static versus dynamic typing is one of the classic religious wars in programming. If you’re coming from C++ and Java . . . and refuse to consider living without static type checks, you might as well put this book down now” (page 4).
This book is an excellent introduction to Lisp, and is unique (among Lisp books that I know of) in the author’s application of the language to practical problems. To do justice to the examples, the author suggests that you download the Emacs text editor, and use it as an integrated development environment (IDE) in conjunction with one of the common Lisp packages (the author suggests using superior Lisp interaction mode for Emacs (SLIME)).