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 = (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)
$5 = (4 . 5)
guile>

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

guile> (cons #t #f)
$6 = (#t . #f)
guile> '("blah-blah" . 3.1415926535)
$7 = ("blah-blah" . 3.1415926535)
guile>

The first and second elements of the pair can be accessed by the Scheme procedures car and cdr, respectively. The dots shown instead of the Guile prompt indicate that the just entered expression is not complete yet.

guile> (define mypair (cons 123 "hello there")
… )
guile> (car mypair)
$8 = 123
guile> (cdr mypair)
$9 = "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.27.0 (development-branch).