(rontolisp) docs
← マクロ

do

(do ((var init step?)...) (end-test result...) body...)

1 つ以上のループ変数で反復します。各 var は開始時に init に束縛され、本体を 1 回通過するたびに step 形式の値へ 並列に 更新されます (いずれかの変数が再代入される前に、すべての step が古い束縛に対して評価されます)。各反復の前に end-test が検査され、それが真になるとループが停止して result 形式が評価され、その最後の値が返されます (なければ nil)。本体とステップは内部のブロック境界で包まれているため、return でループを早期に脱出できます。