Next:
述語
Up:
制御構造
Previous:
ブロックとExit
繰返し
while
test {form}*
[特殊]
testがnon-NILと評価されている間、
form
は、繰返し評価される。
while
は、
form
のまわりにNILと名付けられるブロックを自動的に確定する 特殊書式である。
return
は、そのループから抜け出すために使用することができる。
tagbody
{tag | statement}*
[特殊]
tagは、
go
のために名付けられる。
tagbody
の中のみ
go
を使用することができる。
go
tag
[特殊]
ローカルにスコープされた
tagbody
のなかに現れる
tagの直後の 書式に制御を移す。 ローカルスコープを横切って違う
tagbody
のtagに制御を移すことは 禁止されている。
prog
({var | (var [init])}*) {tag | statement}*
[マクロ]
prog
はマクロで、以下のように展開される。
(block nil (let
var (tagbody
tag | statement
)))
do
({(var init [next])}*) (endtest [result]){declare} {form} *
[マクロ]
varはローカル変数である。 それぞれの
varに、
init
は並行に評価され、割り当てられる。 つぎに、
endtest
が評価され、もし真のとき
do
は
result
を返す。 (そうでないときは、NILを返す) もし
endtest
がNILを返したならば、それぞれの
form
は、 順番に評価される。 書式の評価後、
next
が評価され、その値は それぞれの
var
に再割当され、次の繰返しが始まる。
do*
({var init [next]}*) (endtest [result]){declare} {form}*
[マクロ]
do*
は、
initと
next
の評価と
var
への割り当てが連続的に起こることを除いて、
do
と同様である。
dotimes
(var count [result]) {forms}*
[マクロ]
formsの評価を
count
回行う。
count
は、一回のみ評価される。 それぞれの評価の中で、
var
は整数のゼロから
count
-1まで増加する。
dolist
(var list [result]) {forms}*
[マクロ]
listのそれぞれの要素は、
var
に連続的に与えられる。 そして
forms
は、それぞれの値で評価される。
dolist
は、他の繰返しより早く実行される。たとえば、
mapcar
や再帰的関数のようなものより。 それは、
dolist
が関数のclosureを作ったり適用したりする必要が なく、新しいパラメータのバインドが必要でないため。
until
condition {forms}*
[マクロ]
conditionが満たされている間、
forms
を評価する。
loop
{forms}*
[マクロ]
formsを永遠に評価する。 実行を止めるためには、
return-from, throw
または
go
が
forms
のなかで評価されなければならない。
Hirofumi Nakagaki
Fri Mar 22 14:04:29 JST 1996