Vector
Haskellで数学モジュールを作成しました。
だから私はから始めました:
data Vector a = Vector !a !a !a deriving (Eq, Show)
これで、任意の数値データ型を使用できます。問題は、書く必要がないという単純な理由で、どこにいDouble
ても書きたくないということです。Vector Double
だから私は追加します:
type Scalar = Double
type Vector = Vector Scalar
しかし、もちろん、2 行目の宣言は間違っていVector
ます。では、何に変更すればよいのでしょうか。いいえ、コード全体にこれを書くつもりなので、型エイリアスをそのままにしておきたいと思いVector
ます。つまり、データ型名を変更する必要があります。しかし、それを変更すると、コンストラクターも変更する必要があるように感じます。これにより、すべてがさらに混乱します。ただし、コンストラクターを型エイリアスと同じ名前にするのが面倒な場合は、このようにします。
今私はこれを持っています:
type Scalar = Double
type Vector = VectorT Scalar
data VectorT a = Vector !a !a !a deriving (Eq, Show)
私は恣意的に選んだT
(「タイプ」の略だと思います)が、これについてはよくわかりません。通常、関数を文書化するときは と言う-- Calculate the magnitude of a Vector
のですが、実際にはその型名VectorT
を使用する必要があると感じています。したがって、すべてのデータ型のすべてのコメントにこの規則を適用する必要があるように感じます。vectors
誰かが同様の状況にありましたか?この場合、よりエレガントなソリューションを考えられる人はいますか?