マルチパラメータ型クラスを理解しようとしていますが、インスタンス宣言を取得できません。2 つのベクトルで内積を実行できるように、Vector 型の InnerProductSpace 型クラスを作成しようとしています。まず、各ベクトルの最初の要素を乗算できるかどうかを確認したかっただけです。これが私のコードです
class InnerProductSpace a b c where
dot :: a -> b -> c
data Vector = Vector [Double]
deriving (Show)
instance InnerProductSpace Vector Vector Double where
dot (Vector a) (Vector b) = (head a * head b)
ドット関数を使用しようとした後のエラーは
No instance for (InnerProductSpace Vector Vector c0)
arising from a use of `dot'
The type variable `c0' is ambiguous
Possible fix: add a type signature that fixes these type variable(s)
Note: there is a potential instance available:
instance InnerProductSpace Vector Vector Double
-- Defined at Vector.hs:8:10
Possible fix:
add an instance declaration for
(InnerProductSpace Vector Vector c0)
In the expression: dot a b
In an equation for `it': it = dot a b
私は何を間違えましたか?ありがとう!