Next: Loop Example, Up: while [Contents][Index]
while
So long as the true-or-false-test of the while
expression returns a
true value when it is evaluated, the body is repeatedly evaluated. This
process is called a loop since the Lisp interpreter repeats the same thing
again and again, like an airplane doing a loop. When the result of
evaluating the true-or-false-test is false, the Lisp interpreter does not
evaluate the rest of the while
expression and exits the loop.
Clearly, if the value returned by evaluating the first argument to
while
is always true, the body following will be evaluated again and
again … and again … forever. Conversely, if the value returned
is never true, the expressions in the body will never be evaluated. The
craft of writing a while
loop consists of choosing a mechanism such
that the true-or-false-test returns true just the number of times that you
want the subsequent expressions to be evaluated, and then have the test
return false.
The value returned by evaluating a while
is the value of the
true-or-false-test. An interesting consequence of this is that a
while
loop that evaluates without error will return nil
or
false regardless of whether it has looped 1 or 100 times or none at all. A
while
expression that evaluates successfully never returns a true
value! What this means is that while
is always evaluated for its side
effects, which is to say, the consequences of evaluating the expressions
within the body of the while
loop. This makes sense. It is not the
mere act of looping that is desired, but the consequences of what happens
when the expressions in the loop are repeatedly evaluated.
Next: Loop Example, Up: while [Contents][Index]