「SICP (問題2.73 -)」の編集履歴(バックアップ)一覧に戻る

SICP (問題2.73 -) - (2008/02/21 (木) 23:04:15) のソース

「第2章 データによる抽象の構築」で提示されている問題を解いています。

*目次
#contents(fromhere)

*問題
**2.73
まず、ここはgetやputというテーブルに対する操作ができないと実行しようがないから、3.3.3からプログラムをコピーしてきた。これでget/putができるようになった。

さて、まずはa。

***a.
#highlight(scheme){
(define (deriv exp var)
  (cond ((number? exp) 0)
        ((variable? exp) (if (same-variable? exp var) 1 0))
        (else ((get 'deriv (operator exp)) (operands exp)
               var))))
}

何をしたかというと、各演算子における処理を演算子の型タグによるテーブルを使用し、演算をデータ主導にしている。ただしnumber?やvariable?は型タグを持たない(持てない)から、テーブルには含められない。

***b.
ウィキ募集バナー