Common Lisp the Language, 2nd Edition
Next: Parsing Loop Clauses
Up: Loop
Previous: Introduction
The driving element of the Loop Facility is the loop
macro.
When Lisp encounters a loop
macro call form, it invokes the
Loop Facility and passes to it the loop clauses as a list of unevaluated
forms, as with any macro. The loop clauses contain Common Lisp forms and
loop keywords. The loop keywords are recognized by their symbol name,
regardless of the packages that contain them. The loop
macro translates the given form into Common Lisp code and returns the
expanded form.
The expanded loop form is one or more lambda-expressions for the
local binding of loop variables and a block and a tagbody that express a
looping control structure. The variables established in the loop
construct are bound as if by using let
or
lambda
. Implementations can interleave the setting of
initial values with the bindings. However, the assignment of the initial
values is always calculated in the order specified by the user. A
variable is thus sometimes bound to a harmless value of the correct data
type, and then later in the prologue it is set to the true initial value
by using setq
.
The expanded form consists of three basic parts in the tagbody:
Expansion of the loop
macro produces an implicit block
(named nil
). Thus, the Common Lisp macro
return
and the special form return-from
can be
used to return values from a loop or to exit a loop.
Within the executable parts of loop clauses and around the entire
loop form, you can still bind variables by using the Common Lisp special
form let
.
Next: Parsing Loop Clauses
Up: Loop
Previous: Introduction
AI.Repository@cs.cmu.edu