「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.