A list is a chain of conses in which the car of each cons is an element of the list, and the cdr of each cons is either the next link in the chain or a terminating atom.
A proper list is a list terminated by the empty list. The empty list is a proper list, but is not a cons.
An improper list is a list that is not a proper list; that is, it is a circular list or a dotted list.
A dotted list is a list that has a terminating atom that is not the empty list. A non-nil atom by itself is not considered to be a list of any kind—not even a dotted list.
A circular list is a chain of conses that has no termination because some cons in the chain is the cdr of a later cons.
|
Figure 14.3: Some defined names relating to lists.
An association list is a list of conses representing an association of keys with values, where the car of each cons is the key and the cdr is the value associated with that key.
|
Figure 14.4: Some defined names related to assocation lists.
Lists are sometimes viewed as sets by considering their elements unordered and by assuming there is no duplication of elements.
|
Figure 14.5: Some defined names related to sets.
Except as explicitly specified otherwise,
any standardized function that takes a parameter
that is required to be a list should be prepared to signal
an error of type type-error
if the value received is a dotted list.
Except as explicitly specified otherwise, for any standardized function that takes a parameter that is required to be a list, the consequences are undefined if that list is circular.