Pairs

The foundational compound data type of Scheme is the pair. As might be expected from its name, a pair is two values glued together. The operator used to form a pair is called cons.

guile> (cons 4 5)
(4 . 5)
guile>

Note that the pair is displayed as two items surrounded by parentheses and separated by whitespace, a period (.), and more whitespace. The period is not a decimal point, but rather an indicator of the pair.

Pairs can also be entered as literal values by preceding them with a single quote character.

guile> '(4 . 5)
(4 . 5)
guile>

The two elements of a pair may be any valid Scheme value:

guile> (cons #t #f)
(#t . #f)
guile> '("blah-blah" . 3.1415926535)
("blah-blah" . 3.1415926535)
guile>

The first and second elements of the pair can be accessed by the Scheme procedures car and cdr, respectively.

guile> (define mypair (cons 123 "hello there")
… )
guile> (car mypair)
123
guile> (cdr mypair)
"hello there"
guile>

Note: cdr is pronounced "could-er", according Sussman and Abelson, see https://mitpress.mit.edu/sites/default/files/sicp/full-text/book/book-Z-H-14.html#footnote_Temp_133

Extending LilyPond v2.25.21 (development-branch).