2015/11/11
SICP 問題 3.08
(define f
(let ((a 1))
(lambda (x)
(set! a (* a x))
a)))
(f 0) (f 1)の順に評価したら0,0が返り,(f 1) (f 0)の順に評価すると1, 0 が返ってくれば題意を満たしたことになる.
gosh> (define f
(let ((a 1))
(lambda (x)
(set! a (* a x))
a)))
f
gosh> (f 0)
0
gosh> (f 1)
0
gosh> (define f
(let ((a 1))
(lambda (x)
(set! a (* a x))
a)))
f
gosh> (f 1)
1
gosh> (f 0)
0
;; letをlambdaで書き換えてみた
(define f
((lambda (a)
(lambda (x)
(set! a (* a x))
a)) 1))