National Institute of Advanced Industrial Science and Technology (AIST) This page is a page of the former research institute. We stopped updating on March 31.2001.
E-mail to webmaster (Japanese) E-mail to webmaster (English)
next up previous contents index
Next: 述語 Up: 制御構造 Previous: ブロックとExit

繰返し

  while test {form}* [特殊]

  tagbody {tag | statement}* [特殊]   go 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が評価され、もし真のときdoresultを返す。 (そうでないときは、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またはgoformsのなかで評価されなければならない。


Hirofumi Nakagaki
Fri Mar 22 14:04:29 JST 1996