Next: Printing Bit Vectors, Previous: Printing Strings, Up: Default Print-Object Methods
Wherever possible, list notation is preferred over dot notation. Therefore the following algorithm is used to print a cons x:
A left-parenthesis is printed.
The car of x is printed.
If the cdr of x is itself a cons, it is made to be the current cons (i.e., x becomes that cons),
a space
is printed, and step 2 is re-entered.
If the cdr of x is not null,
a space,
a dot,
a space,
and the cdr of x are printed.
A right-parenthesis is printed.
Actually, the above algorithm is only used when *print-pretty* is false. When *print-pretty* is true (or when pprint is used), additional whitespace_1 may replace the use of a single space, and a more elaborate algorithm with similar goals but more presentational flexibility is used; see Printer Dispatching.
Although the two expressions below are equivalent, and the reader accepts either one and produces the same cons, the printer always prints such a cons in the second form.
(a . (b . ((c . (d . nil)) . (e . nil)))) (a b (c d) e)
The printing of conses is affected by *print-level*, *print-length*, and *print-circle*.
Following are examples of printed representations of lists:
(a . b) ;A dotted pair of a and b (a.b) ;A list of one element, the symbol named a.b (a. b) ;A list of two elements a. and b (a .b) ;A list of two elements a and .b (a b . c) ;A dotted list of a and b with c at the end; two conses .iot ;The symbol whose name is .iot (. b) ;Invalid -- an error is signaled if an attempt is made to read ;this syntax. (a .) ;Invalid -- an error is signaled. (a .. b) ;Invalid -- an error is signaled. (a . . b) ;Invalid -- an error is signaled. (a b c ...) ;Invalid -- an error is signaled. (a \. b) ;A list of three elements a, ., and b (a |.| b) ;A list of three elements a, ., and b (a \... b) ;A list of three elements a, ..., and b (a |...| b) ;A list of three elements a, ..., and b
For information on how the Lisp reader parses lists and conses, see Left-Parenthesis.
Next: Printing Bit Vectors, Previous: Printing Strings, Up: Default Print-Object Methods