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))