for
節は別にして、ループが作用する仕方を制御するいくつか他の
ループ節がある。それらはそれら自身だけで使われてもよいし、
1つまたはそれ以上のfor
節と結合してもよい。
repeat integer
この節は内部の一時変数を使って単純に指定された数まで数える。 このループは、
(loop repeat n do ...) (loop for temp to n do ...)
2番目は実際には使わない変数のための名前を選ぶように強いることを除いて 同一である。
while condition
この節は、指定した条件(任意のLisp式)がnil
になったらループを
止める。たとえば、下記の2つのループは同等だが、2つ目のループを囲む
暗黙のnil
ブロックは異なる。
(while cond forms…) (loop while cond do forms…)
until condition
この節は指定された条件が真、すなわち非nil
のときにループを止める。
always condition
この節は指定された条件がnil
のときにループを止める。while
とは違い、return nil
を使ってループを止めるのでfinally
節は実行されない。すべての条件が非nil
の場合、ループはt
を
戻す:
(if (loop for size in size-list always (> size 10)) (some-big-sizes) (no-big-sizes))
never condition
この節はalways
と似ているが、ループはすべての条件が偽なら
t
を戻し、そうでなければnil
を戻す点が異なる。
thereis condition
この節は指定されたフォームが非nil
のときにループを止める; この
場合、非nil
の値を戻す。すべての値がnil
の場合、ループは
nil
を戻す。