data Vector a = Vector a a a deriving (Eq, Show)
instance Functor Vector where
fmap f (Vector x y z) = Vector (f x) (f y) (f z)
到现在为止还挺好。
instance Num ((Num a) => Vector a) where
negate = fmap negate
不工作。我在第一行尝试了许多不同的变体,但 GHC 一直在抱怨。我想让一个Vector
包含数字的实例成为Num
; 当然这应该是可能的?否则我将不得不为Int
, Integer
, Float
,Double
等创建一个实例,所有这些都具有相同的定义。