print-elements-of-list function illustrates a
loop with a list.
The function requires several lines for its output. If you are reading this in a recent instance of GNU Emacs, you can evaluate the following expression inside of Info, as usual.
If you are using an earlier version of Emacs, you need to copy the necessary expressions to your *scratch* buffer and evaluate them there. This is because the echo area had only one line in the earlier versions.
You can copy the expressions by marking the beginning of the region
with C-<SPC> (
set-mark-command), moving the cursor to
the end of the region and then copying the region using M-w
kill-ring-save, which calls
then provides visual feedback). In the *scratch*
buffer, you can yank the expressions back by typing C-y
After you have copied the expressions to the *scratch* buffer,
evaluate each expression in turn. Be sure to evaluate the last
(print-elements-of-list animals), by typing
C-u C-x C-e, that is, by giving an argument to
eval-last-sexp. This will cause the result of the evaluation
to be printed in the *scratch* buffer instead of being printed
in the echo area. (Otherwise you will see something like this in your
^Jgazelle^J^Jgiraffe^J^Jlion^J^Jtiger^Jnil, in which
each ‘^J’ stands for a newline.)
In a recent instance of GNU Emacs, you can evaluate these expressions directly in the Info buffer, and the echo area will grow to show the results.
(setq animals '(gazelle giraffe lion tiger)) (defun print-elements-of-list (list) "Print each element of LIST on a line of its own." (while list (print (car list)) (setq list (cdr list)))) (print-elements-of-list animals)
When you evaluate the three expressions in sequence, you will see this:
gazelle giraffe lion tiger nil
Each element of the list is printed on a line of its own (that is what
while loop, and since
while loops always return
nil is printed after the last element of the list.