eintr: Uninitialized let Variables
3.6.3 Uninitialized Variables in a ‘let’ Statement
--------------------------------------------------
If you do not bind the variables in a ‘let’ statement to specific
initial values, they will automatically be bound to an initial value of
‘nil’, as in the following expression:
(let ((birch 3)
pine
fir
(oak 'some))
(message
"Here are %d variables with %s, %s, and %s value."
birch pine fir oak))
Here, the varlist is ‘((birch 3) pine fir (oak 'some))’.
If you evaluate this expression in the usual way, the following will
appear in your echo area:
"Here are 3 variables with nil, nil, and some value."
In this example, Emacs binds the symbol ‘birch’ to the number 3, binds
the symbols ‘pine’ and ‘fir’ to ‘nil’, and binds the symbol ‘oak’ to the
value ‘some’.
Note that in the first part of the ‘let’, the variables ‘pine’ and
‘fir’ stand alone as atoms that are not surrounded by parentheses; this
is because they are being bound to ‘nil’, the empty list. But ‘oak’ is
bound to ‘some’ and so is a part of the list ‘(oak 'some)’. Similarly,
‘birch’ is bound to the number 3 and so is in a list with that number.
(Since a number evaluates to itself, the number does not need to be
quoted. Also, the number is printed in the message using a ‘%d’ rather
than a ‘%s’.) The four variables as a group are put into a list to
delimit them from the body of the ‘let’.