繰り返しの前処理・後処理 - lisp-cookbook-ja/common-lisp GitHub Wiki
繰り返しの前処理・後処理 (loop)
loopの開始処理・終了処理を initially finally キーワードを使って書けます。
(loop for i in '(1 2 3)
do (print i)
initially (print "begin")
finally (print "end"))
;-> "begin"
1
2
3
"end"
;=> NIL
initially で指定されたフォームは繰り返しが一度もなくても必ず評価されます。
finally で指定されたフォームは return キーワードで中断された場合など必ずしも評価されません。=> 確実に後処理を行なう