06/01/04 23:25:42
>>202
(let ((a 0))
(define hoge (lambda (x) (+ a x))))
(hoge 10)
だと、3行目ではシンボルhogeに値が束縛されてないと思うぞ。
(define hoge #f)
(let ((a 0)) ; frame1
(set! hoge (lambda (x) (+ a x)))) ; frame2
(hoge 10)
たぶん↑のようにしたいんだと思うけど、
この場合だと、letを評価した時点でframe1が作られ、top <- frame1 になり、
lambdaで作られた手続きは top <- frame1 の frame1 部分を参照する。
で、(hoge 10)が評価されたときに frame2 が作られて
top <- frame1 <- frame2 になる。
あとはaを検索するときは上から順に。という感じかな。
top <- frame2 のようなリスト(か何か)も必要になるけど、
これは継続絡みの話だと思う。