2013年6月17日月曜日

開発環境

計算機プログラムの構造と解釈(Gerald Jay Sussman(原著)、Julie Sussman(原著)、Harold Abelson(原著)、和田 英一(翻訳)、ピアソンエデュケーション、原書: Structure and Interpretation of Computer Programs (MIT Electrical Engineering and Computer Science)(SICP))の2(データによる抽象の構築)、2.4(抽象データの多重表現)、2.4.3(データ主導プログラミングと加法性)、メッセージパッシングの問題 2.75、問題 2.76を解いてみる。

その他参考書籍

問題 2.75

コード

sample.scm

(define (make-from-mag-ang r a)
  (define (dispatch op)
    (cond ((eq? op 'real-part) (* r (cos a)))
          ((eq? op 'imag-part) (* r (sin a)))
          ((eq? op 'magnitude) r)
          ((eq? op 'angle) a)
          (else
           (error "Unkown op -- MAKE_FROM_REAL-IMAG" op))))
  dispatch)

問題 2.76

新しい型や新しい演算を追加する時、システムに施すべき変更について。

明白な振り分けを持つ汎用演算の場合
新しい型が追加されたらその型用の新しい演算を追加。新しい演算を追加するときは、既存の型それぞれようのその新しい演算を追加。
データ主導流の場合
新しい型が追加されたら、その型のパッケージを定義して表に追加。新しい演算を追加するときは、既存の各型のパッケージにその新しい演算を追加。
メッセージパッシング流の場合
新しい型が追加されたら、その構成子を追加。新しい演算が追加されたら、その演算が必要とする全ての型の構成子に新しい演算に対応するための演算を追加。

上記を参考に、新しい型が絶えず追加されるシステムには、メッセージパッシング流が適切。新しい演算が絶えず追加されるシステムには、データ主導流が適切。

0 コメント:

コメントを投稿