繰り返しの前処理・後処理 - 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 キーワードで中断された場合など必ずしも評価されません。=> 確実に後処理を行なう