Scieneer Common Lisp 1.3.9 online documentation

do* varlist endlist &parse-body (body decls)[Macro]

do* ({(var [init] [step])}*) (test exit-form*) declaration* form*

Iteration construct. Each var is initialized sequentially, like let*, to the value of the specified init form. On subsequent iterations, the vars are sequentially assigned the value of the step form (if any). The test is evaluated before each evaluation of the body forms. When the test is true, the exit-forms are evaluated as a progn, with the result being the value of the do. A block named nil is established around the entire expansion, allowing return to be used as an laternate exit mechanism.