環境モデルの実装による再現
  > (define init-env (make-env))
1 > (define-value! 'make-adder
      (list '*lambda* '(n)
        '(lambda (m) (+ m n))
        init-env)
      init-env)
2 > (define make-adder-env (extend init-env '(n) '(1)))
2 > (define-value! 'add1
      (list '*lambda* '(m)
        '(+ m n)
        make-adder-env)
      init-env)
3 > (define make-adder2-env (extend init-env '(n) '(2)))
3 > (define-value! 'add2
      (list '*lambda* '(m)
        '(+ m n)
        make-adder2-env)
      init-env)
4 > (define add1-env (extend make-adder-env '(m) '(3)))
4 > (get 'm add1-env)
  (m . 3)
4 > (get 'n add1-env)
  (n . 1)

一覧 前へ 次へ