GNU Info

Info Node: (emacs-lisp-intro.info)print-elements-of-list

(emacs-lisp-intro.info)print-elements-of-list


Next: Incrementing Loop Prev: Loop Example Up: while
Enter node , (file) or (file)node

An Example: `print-elements-of-list'
------------------------------------

   The `print-elements-of-list' function illustrates a `while' loop
with a list.

   The function requires several lines for its output.  If you are
reading this in Emacs 21 or a later version, 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'
(`copy-region-as-kill').  In the `*scratch*' buffer, you can yank the
expressions back by typing `C-y' (`yank').

   After you have copied the expressions to the `*scratch*' buffer,
evaluate each expression in turn.  Be sure to evaluate the last
expression, `(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 echo area:
`^Jgiraffe^J^Jgazelle^J^Jlion^J^Jtiger^Jnil', in which each `^J' stands
for a `newline'.)

   If you are using Emacs 21 or later, 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:

     giraffe
     
     gazelle
     
     lion
     
     tiger
     nil

   Each element of the list is printed on a line of its own (that is
what the function `print' does) and then the value returned by the
function is printed.  Since the last expression in the function is the
`while' loop, and since `while' loops always return `nil', a `nil' is
printed after the last element of the list.


automatically generated by info2www version 1.2.2.9