繰り返しからの脱出 - lisp-cookbook-ja/common-lisp GitHub Wiki
loopの場合
通常の終了は loop-finish を使います。
(loop for i in '(1 2 3 4 5)
do (print i)
(loop-finish))
returnキーワードでも脱出できます。
(loop for i in '(1 2 3 4 5)
do (print i)
return i)
return による脱出は finally キーワードで指定されたフォームが実行されないので、脱出というより中断的な意味合いになると思います。(繰り返しの前処理・後処理)
無条件に脱出するのはあまり役に立たないので、普通は条件指定します。
(loop for i in '(1 2 3 4 5)
if (evenp i)
do (print i)
(loop-finish))
ネストしたループから抜けるには namedとreturn-fromを組み合わせて使います
(loop named outer
for i from 1 to 10 do
(loop for j from 1 to 10
if (= (+ i j) 10)
do (return-from outer (cons i j))))