[ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
Lists in Lisp are not a primitive data type; they are built up from cons cells. A cons cell is a data object that represents an ordered pair. That is, it has two slots, and each slot holds, or refers to, some Lisp object. One slot is known as the CAR, and the other is known as the CDR. (These names are traditional; see 2.3.6 Cons Cell and List Types.) CDR is pronounced "could-er."
We say that "the CAR of this cons cell is" whatever object its CAR slot currently holds, and likewise for the CDR.
A list is a series of cons cells "chained together," so that each
cell refers to the next one. There is one cons cell for each element of
the list. By convention, the CARs of the cons cells hold the
elements of the list, and the CDRs are used to chain the list: the
CDR slot of each cons cell refers to the following cons cell. The
CDR of the last cons cell is nil
. This asymmetry between
the CAR and the CDR is entirely a matter of convention; at the
level of cons cells, the CAR and CDR slots have the same
characteristics.
Because most cons cells are used as part of lists, the phrase list structure has come to mean any structure made out of cons cells.
The symbol nil
is considered a list as well as a symbol; it is
the list with no elements. For convenience, the symbol nil
is
considered to have nil
as its CDR (and also as its
CAR).
The CDR of any nonempty list l is a list containing all the elements of l except the first.
[ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |