Symbolic programming using Common Lisp

In this document, we describe symbolic programming techniques using the Common Lisp language.

There are a number of nodes. We recommend you read them in this order:

  1. Why Common Lisp. The reason use Common Lisp.
  2. Interpreted languages. Two plausible definitions of ``interpreted language'' and why Common Lisp is not more interpreted than other languages.
  3. Difference with respect to Scheme. For those who know the Scheme language, a list of the major differences between Scheme and Common Lisp.
  4. The psychology of learning. An explanation to an observed phenomenon that many people do not want to learn new things.
  5. Programming language syntax. Common Lisp has a two-level syntax. We explain what that means, and why it is crucial.
  6. Autonomous functions. We define what an autonomous function is, and why it is good to write autonomous functions.
  7. Side-effect free functions. We define what a side-effect free function is, and why it is good to write side-effect free functions.
  8. Indentation of Common Lisp. Programmers of Common Lisp have an agreement on how to format and indent code. Here is a summary of the rules.
  9. Top-down programming. Why top-down programming is usually not what you want.
  10. Bottom-up programming. Why bottom-up programming is usually what you want.
  11. Building specialized languages. A programming technique that is well adapted to program maintenance.
  12. Object-oriented programming. Fundamental terminology of object-oriented programming and how it applies to Common Lisp and other languages.
There is also a glossary.