関数型プログラミング言語Haskell Part11
■ このスレッドは過去ログ倉庫に格納されています
0533デフォルトの名無しさん
2010/02/06(土) 16:39:00> 単純すぎて、どう堅牢性が上がっているのかも分からないし、
それは申し訳ない。
後者は、抽象データ構造にしてモジュールを分ければ、
プログラムの堅牢性が高まる。
module Vector (Vec2, newVec2, getX, getY) where
newtype Vec2 a = Vec2 (a, a)
newVec2 x y = Vec2 (x, y)
getX (Vec2 x, _) = x; getY (Vec2 _, y) = y
---
module Operation where
import Vector
v0 `add` v1 = newVec2 (getX v0 + getX v1) (getY v0 + getY v1)
とすれば、たとえば何らかの理由で2元ベクトルの表現方法を
2要素のタプルから2要素のリストに変えることになっても、
Vector モジュールの定義だけを変えるだけでよく、
Operation モジュールの定義には影響を与えない。
つまり、add の定義はそのまま使える。
これを私は「堅牢性が高い」と表現している。
>>530 の前者のように抽象の壁を設けないと、
データ構造の表現を変えた場合に、
そのデータ構造上の全ての演算の定義を変えなければならない。
■ このスレッドは過去ログ倉庫に格納されています