The left-parenthesis initiates reading of a list.
read is called recursively to read successive objects
until a right parenthesis is found in the input stream.
A list of the objects read is returned. Thus
(a b c)
is read as a list of three objects
The right parenthesis need not immediately follow the printed representation of
the last object; whitespace2
characters and comments may precede it.
If no objects precede the right parenthesis, it reads as a list of zero objects (the empty list).
If a token that is just a dot not immediately preceded by an escape character is read after some object then exactly one more object must follow the dot, possibly preceded or followed by whitespace2 or a comment, followed by the right parenthesis:
(a b c . d)
This means that the cdr of the last cons in the
list is not
but rather the object whose representation followed the dot.
The above example might have been the result of evaluating
(cons 'a (cons 'b (cons 'c 'd)))
(cons 'this-one 'that-one) → (this-one . that-one)
It is permissible for the object following the dot to be a list:
(a b c d . (e f . (g))) ≡ (a b c d e f g)
For information on how the Lisp printer prints lists and conses, see Section 18.104.22.168 (Printing Lists and Conses).