2006-07-06 [長年日記]

_ [Programming] 感動

http://www-ui.is.s.u-tokyo.ac.jp/~hara2001/scheme/material/5/5.mtd.column.html

東大の教材より、感動を覚えたプログラム。

(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 amount)
    (cond ((eq? m 'withdraw) (withdraw amount))
          ((eq? m 'deposit) (deposit amount))
          (else "Unknown request")))
  dispatch)
(define acc (make-account 10000))
実行結果
> (acc 'withdraw 5000)
5000
> (acc 'withdraw 6000)
"Insufficient funds"
> (acc 'deposit 4000)
9000
> (acc 'withdraw 6000)
3000
これはもう、凄いというか、ほんとに Lisp(scheme) とオブジェクト指向を知っている人しか組めねーぞ。 Lisp を使う人は限られていると言われているのが分かった気がする。
[]

«前の日記(2006-06-30) 最新 次の日記(2006-08-01)»