我的问题与类型签名有关。
以下代码编译通过:
我的理解是,由于
请核对我的理解是否正确。
以下代码编译通过:
data Vector a = Vector a a a deriving (Show)
vMult :: (Num a) => Vector a -> a -> Vector a
(Vector i j k) `vMult` m = Vector (i*m) (j*m) (k*m)
然而,我不明白为什么将上述类型签名(第2行)替换为以下内容不起作用:
vMult :: (Num a) => Vector a -> Num -> Vector a
我的理解是,由于
m
的类型为Num
(例如数字8
),而i,j,k
也是Num
类型,因此计算Vector (i*m) (j*m) (k*m)
不应该有问题。请核对我的理解是否正确。