2010/03/27

loop-finish

Common Lisp の loop からぬける loop-finish なんてのがあったのか。

(loop for i in '(1 3 5 4 8 7)
if (evenp i)
do (loop-finish)
collect i)
;;=> (1 3 5)

(loop for i in '(1 3 5 4 8 7)
if (evenp i)
do (loop-finish)
collect i
finally (print "hello"))
;;=> (1 3 5)
;; hello

いままで知らなかったから、こんなふうに書いてたよ。

(loop for i in '(1 3 5 4 8 7)
if (evenp i)
do (return x)
collect i into x)
;;=> (1 3 5)

0 件のコメント: