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

目次


問題

2.73

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

さて、まずはa。

a.

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

| 新しいページ | 編集 | 差分 | 編集履歴 | ページ名変更 | アップロード | 検索 | ページ一覧 | タグ | RSS | ご利用ガイド | 管理者に問合せ |
|ログイン|