内部状態 の取り扱いで新たな発見

ココを見ていたら新たな新事実が。
http://www.shido.info/lisp/scheme_asg.html

(define (make-bank-account amount)
  (lambda (n)
    (set! amount (+ amount n))
    amount))

(define yamada-bank-account (make-bank-account 1000))
(yamada-bank-account 5000)
;6000

(yamada-bank-account -5500)
;500

え、、、lambda の内部状態って保存してあるのか。
Lispすごいなぁ。

でも、MyLisp(仮称)では対応できてない。
今の実装では Lambda を評価するときの内部状態は
その時だけの使い捨てにしていた。><;

このままでは上記のコードの結果にはならない。
どうやって実装しようかなぁ。