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

© 2022 wat-aro