A Baker's Dozen of Reasons to Adopt
Common Lisp: An Interactive Approach
by Stuart C. Shapiro

  1. Contains many sample interactions to illustrate the material in the text, helping students know what to expect when they experiment on their own.

  2. Introduces pure Lisp before imperative Lisp to give students a familiarity with the functional approach and to help develop a balanced programming style.

  3. Labels each exercise as either review, instruction, drill, utility, or part of one of the extended programming projects, so that an intelligent choice can be made when only selected exercises are to be done.

  4. Presents coverage of packages early in Chapter 7, and then uses packages consistently and frequently. From Chapter 7 on, every set of exercises utilizes a different package for thorough student familiarity.

  5. Carefully distinguishes S-expressions from forms beginning with the first chapter and consistently throughout.

  6. Discusses the important Common Lisp types: numbers (integers, floating point numbers, and ratios), strings, characters, symbols, packages, lists, conses, functions, hash tables, and single dimensional arrays.

  7. Provides two chapters on the Common Lisp Object System (CLOS) to introduce students to object-oriented programming.

  8. Introduces check-type in Chapter 16 and uses it consistently afterwards to help students ensure that the objects passed to a function are of the correct type.

  9. Views the documentation string as a required part of a function definition.

  10. Uses first and rest instead of car and cdr, eql instead of eq, and setf instead of setq to correspond with modern Common Lisp.

  11. Contains solutions to about one-third of the programming exercises in Appendix A.

  12. Includes a Common Lisp reference manual that documents all the Common Lisp functions, macros, and special forms introcuced in the text.

  13. An Instructor's Guide, available free upon adoption, presents chapter objectives and solutions to all programming exercises.

Back to Common Lisp: An Interactive Approach
Stuart C. Shapiro <shapiro@cse.buffalo.edu>