手続き
(lambda (amount) (if (<= amount balance) (begin (set! balance (- balance amount)) balance) (error "Insufficient balance" balance)))
は評価してもエラー出なくて
(if (<= amount balance) (begin (set! balance (- balance amount)) balance) (error "Insufficient balance" balance))
は評価するとamountが見つからんってエラーがでる。
手続きは内部は覆われてて実際使うときまで評価されないてことだろうか。
そういうspecial formなのかな。