理系学生日記

おまえはいつまで学生気分なのか

問題2-76 (2.4.3 Data-Directed Programming and Additivity)

generic operations with explicit dispatch

新しい型のデータを加えるときは,選択子がデータ型の詳細を他の関数から隠しているなら、その選択子のみの書き換え(新しい型から選択できるようにする)を行えばいい感じかと思います。
新しい操作を加えるときは、上の選択子の書き換えさえすんでいたら何も必要は無いか。

data-directed style

新しい型のデータを加えるときは、その型の選択子を書き換える。もしその型に関する操作が必要なら、それをテーブルに追加しないとダメかなー。
新しい操作を加えるときは、その操作をテーブルに加える。

message-passing

message-passingだと、型の追加と操作の追加ってほとんど同義に見えるんだけど、違うの?

最後

頻繁にデータ型の追加が発生するんなら、message passingが良いような気がします。data-directed styleだと逐一テーブルにその型と型に付随する操作を追加していくのがメンドい。
既存の型に新しい操作を加える作業が頻繁に発生するのであれば、data-directed styleが良さそう。テーブルにその関数を単に追加するだけでおk。