lispでクロージャで新しい環境を作成するタイミングは、そのクロージャを適用するとき。
クロージャを生成するときに新しい環境を生成して、その環境を使いまわすとたぶんこうなる。
> (set! number (lambda (x) (lambda () x)))
> (set! num10 (number 10))
> (set! num20 (number 20))
> (num10)
20
でも
自作lispで下のコードが動かないorz
(set! make-number ((lambda (x) (lambda nil x))))
実践できない。。。
間違ってた。
(set! make-number (lambda (x) (lambda nil x)))
だった。