Next: Association List Type, Previous: Box Diagrams, Up: Cons Cell Type [Contents][Index]
Dotted pair notation is a general syntax for cons cells that
represents the CAR and CDR explicitly.  In this syntax,
(a . b) stands for a cons cell whose CAR is
the object a and whose CDR is the object b.  Dotted
pair notation is more general than list syntax because the CDR
does not have to be a list.  However, it is more cumbersome in cases
where list syntax would work.  In dotted pair notation, the list
‘(1 2 3)’ is written as ‘(1 .  (2 . (3 . nil)))’.  For
nil-terminated lists, you can use either notation, but list
notation is usually clearer and more convenient.  When printing a
list, the dotted pair notation is only used if the CDR of a cons
cell is not a list.
Here’s an example using boxes to illustrate dotted pair notation.
This example shows the pair (rose . violet):
    --- ---
   |   |   |--> violet
    --- ---
     |
     |
      --> rose
You can combine dotted pair notation with list notation to represent
conveniently a chain of cons cells with a non-nil final CDR.
You write a dot after the last element of the list, followed by the
CDR of the final cons cell.  For example, (rose violet
. buttercup) is equivalent to (rose . (violet . buttercup)).
The object looks like this:
    --- ---      --- ---
   |   |   |--> |   |   |--> buttercup
    --- ---      --- ---
     |            |
     |            |
      --> rose     --> violet
The syntax (rose . violet . buttercup) is invalid because
there is nothing that it could mean.  If anything, it would say to put
buttercup in the CDR of a cons cell whose CDR is already
used for violet.
The list (rose violet) is equivalent to (rose . (violet)),
and looks like this:
    --- ---      --- ---
   |   |   |--> |   |   |--> nil
    --- ---      --- ---
     |            |
     |            |
      --> rose     --> violet
Similarly, the three-element list (rose violet buttercup)
is equivalent to (rose . (violet . (buttercup))).
It looks like this:
    --- ---      --- ---      --- ---
   |   |   |--> |   |   |--> |   |   |--> nil
    --- ---      --- ---      --- ---
     |            |            |
     |            |            |
      --> rose     --> violet   --> buttercup
Next: Association List Type, Previous: Box Diagrams, Up: Cons Cell Type [Contents][Index]