ひさびさ読書会
一緒にヤッてた若い方が多忙でなくなったとの事で再開。
久々だったので以下なナニがぱっと見で理解できず。
(define new-withdraw (let ((balance 100)) (lambda (amount) (if (>= balance amount) (begin (set! balance (- balance amount)) balance) "Insufficient funds"))))
define な式が評価された時点で let 以降の式も評価されるんだったか云々と。new-withdraw が評価されないと let 以降の式も評価されない。ので、評価される度に異なるオブジェクトが作られる、ってあたりがイメージできるようになるまで若干の時間を要しました。