SICP問題2.76

  • 明白な振り分けを持つ汎用演算
  • データ主導流
  • メッセージパッシング流

について、
新しい型や新しい演算を追加する時、システムに施すべき変更は?
新しい型が絶えず追加されるシステムにはどの方法が最も適切か?
新しい演算が絶えず追加されるシステムには、どれが最も適切か?

明白な振り分けを持つ汎用演算の場合
  新しい型の追加
    全ての汎用演算手続きに新しい型の振り分け処理を追加する
  新しい演算の追加
    一つの演算を追加し、その中で型の振り分け処理、処理内容を追加する

データ主導流の場合
  新しい型の追加
    既存の部分に変更はなく、新しい型のパッケージを作成し追加する
  新しい演算の追加
    既存の全てのパッケージに演算手続きを追加する

メッセージパッシング流の場合
  新しい型の追加
    既存の部分に変更はなく、新しい型データオブジェクトを追加する。
  新しい演算の追加
    既存の全ての型データオブジェクトに演算手続きを追加する

新しい型が絶えず追加されるシステムにはメッセージパッシング流が適している。
新しい演算が絶えず追加されるシステムでは、どれも演算の追加が必要になるのであまり変わらないような……。