SICP問題3.10

(define (make-withdraw initial-amount)
  (let ((balance initial-amount))
    (lambda (amount)
      (if (>= balance amount)
          (begin (set! balance (- balance amount))
                 balance)
          "Insufficient funds"))))

上の make-withdraw を環境モデルを絵で描く
(define W1 (make-withdraw 100))でW1オブジェクト作成後の環境

(W1 50)の呼び出し前の環境

(W1 50)の呼び出し後の環境

(define W2 (make-withdraw 100))でW2オブジェクト作成後の環境
(2009/12/10修正 W2とW1の関数本体が共有されているように図を修正)