(rontolisp) docs
← マクロ

do*

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

do と同様ですが、束縛とステップが並列ではなく逐次的 (let* 形式) です。各 init 形式は同じリスト内で先に束縛された変数を参照でき、各 step 形式はこの反復ですでに更新された変数を参照できます。それ以外の動作は同一で、各パスの前に end-test が検査され、result 形式が戻り値を供給し、return で早期に脱出します。以下の例では j が束縛されたばかりの i から初期化されていますが、これは素の do では不可能です。