Common Lisp the Language: 2nd Edition
In this greatly expanded edition of the defacto standard, you’ll learn about the nearly 200 changes already made since original publication – and find out about gray areas likely to be revised later. Written by the Vice-Chairman of X3J13 (the ANSI committee responsible for the standardization of Common Lisp) and co-developer of the language itself, the new edition contains the entire text of the first edition plus six completely new chapters. They cover:
- CLOS, the Common Lisp Object System, with new features to support function overloading and object-oriented programming, plus complete technical specifications
- Loops, a powerful control structure for multiple variables
- Conditions, a generalization of the error signaling mechanism
- Series and generators
- Plus other subjects not part of the ANSI standards but of interest to professional programmers.
Throughout, you’ll find fresh examples, additional clarifications, warnings, and tips – all presented with the author’s customary vigor and wit.
The goals of Common Lisp are thus very close to those of Standard Lisp and Portable Standard Lisp. Common Lisp differs from Standard Lisp primarily in incorporating more features, including a richer and more complicated set of data types and more complex control structures.
This book is intended to be a language specification rather than an implementation specification (although implementation notes are scattered throughout the text). It defines a set of standard language concepts and constructs that may be used for communication of data structures and algorithms in the Common Lisp dialect. This set of concepts and constructs is sometimes referred to as the ‘core Common Lisp language’ because it contains conceptually necessary or important features.
It is not necessarily implementationally minimal. While many features could be defined in terms of others by writing Lisp code, and indeed may be implemented that way, it was felt that these features should be conceptually primitive so that there might be agreement among all users as to their usage. (For example, bignums and rational numbers could be implemented as Lisp code given operations on fixnums. However, it is important to the conceptual integrity of the language that they be regarded by the user as primitive, and they are useful enough to warrant a standard definition.)
For the most part, this book defines a programming language, not a programming environment. A few interfaces are defined for invoking such standard programming tools as a compiler, an editor, a program trace facility, and a debugger, but very little is said about their nature or operation. It is expected that one or more extensive programming environments will be built using Common Lisp as a foundation, and will be documented separately.