Scheme, like Lisp, has built-in procedures for dealing with a
particularly flexible kind of list--a list of pairs, whose
cdr fields hold pointers that string them together, and whose
car fields hold the values. (That is, the cdr fields
act as "next" pointers, linking the pairs into a linear list.)