About Lisp
People often speak of Lisp as if it were a single language,
but it is more accurate to see it as a family of languages.
Many things that are said to be properties of Lisp are actually
properties of some varieties of Lisp and not properties of others.
Languages in the Lisp family vary greatly in size and can provide
a variety of control structures and data types; implementations
can be large or small, fast or slow, interpreted or compiled, etc.
Nonetheless, there are a number of typical features that most
Lisps share:
- A fully parenthesised prefix syntax for programs.
- A similar syntax for list data, so that source code
can easily be respresented as lists, not just as text.
- Macros that work as source-to-source transformations on lists
and that can be used to extend the language.
- An emphasis on recursion and on programming with functional
arguments and results.
- Data structures such as symbols and lists that are convenient
for "symbolic programming".
- An object-like representation of data so that data contains type
information and has an independent existence (rather than living
in storage that's tied to variables).
- Automatic storage management in the form of garbage collection.
- A printed representation for most kinds of objects so that they
can be input, output, and written as constants in source text.
This page is still under construction.