2007/09/27

[Common Lisp] loop collect でのクロージャ

loop を使ったものの結果が (B B) になるのはやはり仕様でしょうか?

(mapcar #'funcall
(loop for i in '(a b)
collect #'(lambda () i)))
;; => (B B)

(mapcar #'funcall
(let (x)
(dolist (i '(a b))
(push #'(lambda () i) x))
x))
;; => (B A)

(mapcar #'funcall
(mapcar #'(lambda (x)
#'(lambda () x))
'(a b)))
;; => (A B)

0 件のコメント: