Next: , Previous: , Up: ループ機能   [Contents][Index]


4.7.4 繰り返し節

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を戻す。