selflearn @ ウィキ

SICP (問題2.73 -)

最終更新:

kato

- view
メンバー限定 登録/ログイン
「第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.

タグ:

SICP scheme
記事メニュー
目安箱バナー