SICP問題3.11

3.1.1節の銀行口座手続き

(define (make-account balance)
  (define (withdraw amount)
    (if (>= balance amount)
        (begin (set! balance (- balance amount))
               balance)
        "Insufficient funds"))
  (define (deposit amount)
    (set! balance (+ balance amount))
    balance)
  (define (dispatch m)
    (cond ((eq? m 'withdraw) withdraw)
          ((eq? m 'deposit) deposit)
          (else (error "Unknown request -- MAKE-ACCOUNT" m))))
  dispatch)

について一連の対話で生成される環境構造
(define acc (make-account 50))

*1

*1:acc 'deposit) 40) accが 90 となっている状態 ((acc 'withdraw) 60) acc が 30 となっている状態 (define acc2 (make-account 100