Lisp Books by Subject

prev next

site map



"You come in with a mind full of mush, and you leave thinking like a computer scientist."
Books are listed in the following categories:
Introductions to Lisp
Advanced Texts
Object Oriented Programming
Books on Artificial Intelligence and Mathemetics, with a Lisp language emphasis
Books on Lisp Style
Books on Implementing Lisp

This page does not list standard references, periodicals, or electronic resources such as newsgroups.

Each book title, below, is a link to a bibliography arranged by author, which gives publishing information, and may also provide links to web sites associated with the book, links to ftp sites where source code from the book is available, or links to contact the author.

The authors of the comments which follow some of the book listings are identified by initials following the comment. These correspond to:

You can mail to these people by clicking on their initials. These comments are, of course, personal opinions and do not carry the blessing of the ALU.

The ordering of books within categories mostly follows the organization within the Lisp FAQ.

See also recent MIT Press books on Computer Science & Artificial Intelligence, Quantum Books, and Powell's Books, which has a usefull search form.

Introductions to Lisp

Common LISP: A Gentle Introduction to Symbolic Computation.
David S. Touretzky.
Perhaps the best tutorial introduction to the language. It has clear and correct explanations, and covers some fairly advanced topics. The book is an updated Common Lisp version of the 1984 edition published by Harper and Row Publishers.

Three free Lisp educational tools which were used in the book: Evaltrace is a graphical notation for explaining how evaluation works and is described in "Visualizing Evaluation in Applicative Languages" by David S. Touretzky and Peter Lee, CACM 45-59, October 1992. DTRACE is a "detailed trace" which provides more information than the tracing tools provided with most Common Lisp implementations. SDRAW is a read-eval-draw loop that evaluates Lisp expressions and draws the result as a cons cell diagram (for both X11 and ascii terminals). Also available is PPMX, a tool for pretty printing macro expansions. [MK&BM]

ANSI Common Lisp.
Paul Graham.
Combines an introduction to Lisp programming, and a convenient, up-to-date reference manual for ANSI Common Lisp. Beginners will find that its careful explanations and interesting examples make Lisp programming easy to learn. Professional programmers will appreciate its thorough, practical approach. [publisher's abstract] A German translation is reportedly in the works.
See also [DLAMKINS].
Common LISPcraft.
Robert Wilensky.
See also [DLAMKINS].
Common Lisp.
Wade L. Hennessey.
Fairly good, but jumps back and forth from the simple to the complex rather quickly, with no clear progression in difficulty.[MK&BM]
Let's Talk LISP
Laurent Siklossy.
Good introduction, but quite out of date.[MK&BM]
Common Lisp: An Interactive Approach.
Stuart C. Shapiro.
LISP, The Language of Artificial Intelligence.
A. A. Berk.
An Alfred handy guide to Understanding LISP,
Paul Y. Gloess.
The Programmer's Introduction to LISP.
Ward D. Maurer
LISP Lore: A Guide to Programming the LISP Machine, 2nd edition.
Hank Bromley, and Richard Lamson.
Introduction to LISP and Symbol Manipulation.
Sharam Hekmatpour.
A programmer's guide to Common Lisp.
Deborah G. Tatar.
Good introduction on Common Lisp for programmers familiar with other programming languages, such as FORTRAN, PASCAL, or C. [MK&BM]
See also [DLAMKINS].
The Common Lisp Companion.
Timothy Koschmann.
Targeted for those with some programming experience who wish to learn draft-ANSI Common Lisp, including CLOS and the CL condition system. Examples progress incrementally from simple numerical calculation all the way to a logic-programming extension to CL. [MK&BM]

Advanced Texts

Structure and Interpretation of Computer Programs.
Harold Abelson, Gerald Jay Sussman and Julie Sussman.
Required reading for a degree in either CS or EE at M.I.T. It deals with Scheme rather than Common Lisp, and the first edition sometimes uses its own terminology for concepts which go by other names elsewhere in the industry. Nonetheless, the quote above is possibly more true of this book than any other. A new printing corresponding to IEEE Scheme has just been released.[HRS]
See below.
Essential LISP.
John R. Anderson, Albert T. Corbett, and Brian J. Reiser.
Concentrates on how to use Lisp with iteration and recursion. [MK&BM]
Symbolic Computing with Lisp.
Robert D. Cameron and Anthony H. Dixon.
The book is intended primarily as a third-year computer science text. In terms of programming techniques, it emphasizes recursion and induction, data abstraction, grammar-based definition of Lisp data structures and functional programming style. It uses two Lisp languages:
  1. a purely functional subset of Lisp called Small Lisp and
  2. Common Lisp.
An MS-DOS interpreter for Small Lisp (including source) is provided with the book. It considers applications of Lisp to formal symbolic data domains: algebraic expressions, logical formulas, grammars and programming languages. [MK&BM]
Paul Graham.
A comprehensive study of advanced Lisp techniques, with bottom-up programming as the unifying theme. It gives the first complete description of macros and macro applications. The book also covers important subjects related to bottom-up programming, including functional programming, rapid prototyping, interactive development, and embedded languages. The final chapter takes a deeper look at object-oriented programming than previous Lisp books, showing the step-by-step construction of a working model of the Common Lisp Object System (CLOS).

As well as an indispensable reference, On Lisp is a source of software. Its examples form a library of functions and macros that readers will be able to use in their own Lisp programs. [publisher's abstract]

Emphasizes a bottom-up style of writing programs, which he claims is natural in Lisp and has advantages over the traditional way of writing programs in C and Pascal. Also has in-depth sections on writing macros with several nice examples. [MK&BM] See below.

See also [DLAMKINS].
ANSI Common Lisp.
See above.
Lisp: A first language for computing
John A. Moyne

Object Oriented Programming in Lisp

Object-Oriented Programming in Common Lisp: A Programmer's Guide to CLOS.
Sonya E. Keene.
Tutorial introduction to CLOS with many examples and a lot of good advice for designing large programs using CLOS. [MK&BM]
See also [DLAMKINS].
Object-Oriented Programming: A Unified Foundation.
Giuseppe Castagna.
The language Simula is the precursor of all object-oriented languages. This language imposed a certain style of programming that was followed by all class-based object-oriented languages until the appearance of the so-called multiple-dispatching languages, like CLOS, in which a different style of object-oriented programming arose.

Although much work has been done to define a theory of object-oriented languages, efforts have concentrated mostly on languages that follow Simula's style, ignoring multiple-dispatching languages. This book fills the gap. It elucidates object-oriented concepts, facilitate comparisons of these two different styles of programming and sheds new light on some long-standing problems concerning, for example, the use of covariance and contravariance, or the typing of binary methods.

This book also shows that it is possible to smoothly integrate both Simula's and CLOS's styles of programming into a single language. The book is self-contained and does not assume any expertise in object-oriented programming or type theory. It will be consulted by professional computer scientists interested in the theory of programming and can serve as the text for a variety of advanced courses in type theory of object-oriented programming. [Publisher's Abstract]

Understanding CLOS: The Common LISP Object System.
Jo A. Lawless and Molly M. Miller.
See also [DLAMKINS].
The Art of the Metaobject Protocol
See references and below.
LISP, Objects, and Symbolic Programming
Robert R. Kessler and Amy R. Petajan.
Includes a small Lisp compiler. [MK&BM]
Object-Oriented Programming: The CLOS Perspective
Andreas Paepcke, editor.
This book is a collection of essays on the following topics:
  • Description of CLOS and its design philosophy.
  • The Metaobject Protocol and its use.
  • Comparison of CLOS with Smalltalk, Eiffel, Sather, and C++.
  • CLOS Uses and Methodology. Descriptions of two large CLOS applications (Sun's LispView and a hybrid knowledge representation tool) and an approach to documenting object-oriented protocols (similar to that of AMOP).
  • Implementation details. Descriptions of TI CLOS for the Explorer and PCL's method dispatch mechanism.
The collection has excellent coverage of MOPs and "Open Implementation" (although the book predates the term), giving the reader a good understanding of what they are and why they are a good thing.
See below. [HRS]
Object-Oriented Common Lisp
See also [DLAMKINS].

Books on Artificial Intelligence and Mathematics, with a Lisp language emphasis

For general books on Artificial Intelligence consult the AI FAQ.

See also, the book list of the UGAI Workshop.

Paradigms of Artificial Intelligence Programming: Case Studies in Common Lisp
Peter Norvig.
Provides an in-depth exposition of advanced AI programming techniques and includes large-scale detailed examples. The book is the most advanced AI/Common-Lisp programming text and reference currently available, and hence is not for the complete novice. It focuses on the programming techniques necessary for building large AI systems, including object-oriented programming, and has a strong performance orientation.

The text is marked by its use of "non-toy" examples to illustrate the techniques. All of the examples are written in Common Lisp, and copies of the source code are available on disk in Macintosh or DOS format from the publisher. Some of the techniques described include rule-based pattern matching (GPS, Eliza, a subset of Macsyma, the Emycin expert system shell), constraint propagation and backtracking (Waltz line-labelling), alpha-beta search (Othello), natural language processing (top-down, bottom-up and chart parsing), logic-programming (unification and Prolog), interpreters and compilers for Scheme, and object-oriented programming (CLOS).

The examples are also used to illustrate good programming style and efficiency. There is a guide to trouble-shooting and debugging Lisp programs, a style guide, and a discussion of portability problems. Some of the efficiency techniques described include memoization, data indexing, compilation, delaying computation, proper use of declarations, avoiding garbage collection, and choosing and using the correct data structure.

The book also serves as an advanced introduction to Common Lisp, with sections on the Loop macro, CLOS and sequences, and some coverage of error handling, series, and the package facility. [MK&BM]

See below.
See also [DLAMKINS].
Emperical Methods for Artificial Intelligence.
Paul R. Cohen.
Computer science and artificial intelligence in particular have no curriculum in research methods, as other sciences do. This book presents empirical methods for studying complex computer programs: exploratory tools to help find patterns in data, experiment designs and hypothesis-testing tools to help data speak convincingly, and modeling tools to help explain data. Although many of these techniques are statistical, the book discusses statistics in the context of the broader empirical enterprise. The first three chapters introduce empirical questions, exploratory data analysis, and experiment design. The blunt interrogation of statistical hypothesis testing is postponed until chapters 4 and 5, which present classical parametric methods and computer-intensive (Monte Carlo) resampling methods, respectively. This is one of few books to present these new, flexible resampling techniques in an accurate, accessible manner.

Much of the book is devoted to research strategies and tactics, introducing new methods in the context of case studies. Chapter 6 covers performance assessment, chapter 7 shows how to identify interactions and dependencies among several factors that explain performance, and chapter 8 discusses predictive models of programs, including causal models. The final chapter asks what counts as a theory in AI, and how empirical methods -- whiping cch deal with specific systems -- can foster general theories.

Mathematical details are confined to appendixes and no prior knowledge of statistics or probability theory is assumed. All of the examples can be analyzed by hand or with commercially available statistics packages. The Common Lisp Analytical Statistics Package (CLASP), developed in the author's laboratory for Unix and Macintosh computers, available from The MIT Press. [Publisher's Abstract]

The Limits of Mathematics, The Unknowable
G. J. Chaitin
The Limits of Mathematics presents the final version of Chaitin's course on the limits of mathematical reasoning. This course uses algorithmic information theory to show that mathematics has serious limitations, and features a new more didactic approach to algorithmic information theory using LISP and Mathematica software. The thesis of the book is that the incompleteness phenomenon discovered by Goedel is much more widespread and serious than hitherto suspected. Also Goedel and Einstein's views on the foundations of mathematics are discussed, and it is suggested that mathematics is quasi-empirical and that experimental mathematics should be used more freely. [Publisher's Abstract]

The companion "prequel" volume, The Unknowable, presents an accessible historical survey contrasting Chaitin's ideas on the limits and structure of mathematical understanding with Goedel's concept of incompleteness and Turing's concept of uncomputability.

Artificial Intelligence Programming, 2nd edition.
Eugene Charniak, Christopher K. Riesbeck, Drew V. McDermott and James R. Meehan.
Provides many nice code fragments, all of which are written in Common Lisp. The first half of the book covers topics like macros, the reader, data structures, control structures, and defstructs. The second half of the book describes programming techniques specific to AI, such as discrimination nets, production systems, deductive database retrieval, logic programming, and truth maintenance. [MK&BM]
See also [DLAMKINS].
LISP, 3rd edition.
Patrick H. Winston and Berthold K. P. Horn.
Covers the basic concepts of the language, but also gives a lot of detail about programming AI topics such as rule-based expert systems, forward chaining, interpreting transition trees, compiling transition trees, object oriented programming, and finding patterns in images. Not a tutorial. Has many good examples. [MK&BM]
See also [DLAMKINS].
Common LISP Programming for Artificial Intelligence.
Tony Hasemer and John Domingue.
This book presents an introduction to Artificial Intelligence with an emphasis on the role of knowledge representation. Three chapters focus on object-oriented programming, including the construction and use of a subset of CLOS.

The authors' research into the problems faced by novice Lisp users influenced the content and style of the book. (The authors are members of the Human Cognition Research Laboratory at the Open University in the United Kingdom.) The book employs a tutorial approach, especially in areas that students often find difficult, such as recursion. Early and progressive treatment of the evaluator promotes understanding of program execution. Hands-on exercises are used to reinforce basic concepts.

The book assumes no prior knowledge of Lisp or AI and is a suitable textbook for students in Cognitive Science, Computer Science and other disciplines taking courses in Lisp or AI programming as well as being invaluable for professional programmers who are learning Lisp for developing AI applications. [MK&BM]

The Elements of Artificial Intelligence Using Common Lisp, 2nd edition.
Steven Tanimoto.
Common Lisp and Artificial Intelligence.
Patrick R. Harrison.
Common LISP Modules: Artificial Intelligence in the Era of Neural Networks and Chaos Theory.
Mark Watson.
Natural language understanding.
James Allen.
Natural Language Processing in Lisp: An Introduction to Computational Linguistics.
G. Gazdar and C. Mellish.
Genetic Programming: On the Programming of Computers by Means of Natural Selection.
Genetic Programming II: Automatic Discovery of Reusable Programs .
John Koza.

Books on Lisp Style

Also see the notes on improving your Lisp style, derived from the Lisp FAQ.
See above.
LISP Style and Design
Molly M. Miller and Eric Benson.
How to write large Lisp programs and improve Lisp programming style. Uses the development of Lucid CL as an example. [MK&BM]
The Art of Lisp Programming
Robin Jones, Clive Maynard, and Ian Stewart.
LISP, Lore, and Logic: An Algebraic View of LISP
W. Richard Stark.
Self-modifying code, self-reproducing programs, etc. [MK&BM]
CMU CL User's Manual
Chapter 7 talks about writing efficient code. [MK&BM]
Paradigms of Artificial Intelligence Programming: Case Studies in Common Lisp
See above.
Structure and Interpretation of Computer Programs.
See above and below.
Scheme and the Art of Programming
George Springer and Daniel P. Friedman.
Programming Paradigms in LISP.
Rajeev Sangal
Programming in Common Lisp.
Rodney A. Brooks.
Chapter 5 discusses Lisp programming style. [MK&BM]

Books on Implementing Lisp

Also see the Lisp Memory Management section of this web-site.
Structure and Interpretation of Computer Programs.
See above.
The Art of the Metaobject Protocol
See above.
Object-Oriented Programming: The CLOS Perspective
Discusses some CLOS implementation techniques. See above.
Anatomy of Lisp
John Allen.
Discusses some of the fundamental issues involved in the implemention of Lisp. [MK&BM]
See also [DLAMKINS].
Programming Languages, An Interpreter-Based Approach
Samuel Kamin
Includes sources to several interpreters for Lisp-like languages.
Tim Budd has reimplemented the interpreters in C++. [MK&BM]
Lisp: A Portable Implementation
Sharam Hekmatpour
Describes a portable implementation of a small dynamic Lisp interpreter (including C source code). [MK&BM]
Functional Programming: Application and Implementation
Peter Henderson
The Architecture of Symbolic Computers
Peter M. Kogge.
Includes sections on memory management, the SECD and Warren Abstract Machines, and overviews of the various Lisp Machine architectures. [MK&BM]
Essentials of Programming Languages
Daniel P. Friedman, Mitchell Wand, and Christopher T. Haynes.
Teaches fundamental concepts of programming language design by using small interpreters as examples. Covers most of the features of Scheme. Includes a discussion of parameter passing techniques, object oriented languages, and techniques for transforming interpreters to allow their implementation in terms of any low-level language. Also discusses scanners, parsers, and the derivation of a compiler and virtual machine from an interpreter. Includes a few chapters on converting code into a continuation passing style. [MK&BM]
Topics in Advanced Language Implementation
Peter Lee, editor.
Articles relevant to the implementation of functional programming languages. [MK&BM]
Les Langages Lisp
LiSP in Small Pieces
Christian Queinnec
The book covers Lisp, Scheme and other related dialects, their interpretation, semantics and compilation. [MK&BM] Les Languages Lisp is the French version, LiSP in Small Pieces is the English version.
See also [DLAMKINS].
Performance and Evalution of Lisp Systems
Richard P. Gabriel.
Defines and comments on the "Gabriel Benchmarks", and gives performance figures and implementation details for early 1980's implementations. [HRS]
Interpreting Lisp
Civilized Software.
A downloadable postscript book on how Lisp works and how to build a Lisp interpreter.