update: なんとMatz様から直々の指摘を受けてしまった: http://twitter.com/yukihiro_matz/status/26685527109 実はこのポストの後、ベンチプレスを1セットやって一息ついていいたところ、schemeの例が間違っていることに気付いた。確かにループのボディーにあたるlambdaでletでローカルを作ってキャプチャーするとMatz様のおっしゃる通り。 俺はPerlに心を侵されていたのか… いつも「動けばいいやぁ~」みたいな気持で使っていたclosureだが、もう一度勉強しなおした方がよさそうだ。 (let ([closures '()]) (for-each ;; これがループのボディーになるよな。 (lambda (i) ;; じゃ、ここにローカル (let ([loop-local-var (sprintf "foo~A" i)]) (