Matrix
とVector
コンストラクターはどちらも種類*->*
があるため、値コンストラクターのように見えます。しかし、私が何かをしようとすると
instance Functor Vector a where
fmap g ( Vector a ) = Vector ( g a )
このエラーが発生します:
Not in scope: data constructor `Vector'
let v = Vector [1..3]
とにかく使ってベクトルを作ることができないので、これは理にかなっています。しかし、ソースを確認すると、MatrixコンストラクターとVectorコンストラクターの両方がそれぞれのモジュールからエクスポートされていることがわかります。
Vector.hs
module Data.Packed.Vector (
Vector,
fromList, (|>), toList, buildVecto..
) where
Matrix.hs
module Data.Packed.Matrix (
Element,
Matrix,rows,cols...
) where
応用ファンクター、モナドなどのディド。