mk1*_*k12 1 haskell types instance typeclass
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)
Run Code Online (Sandbox Code Playgroud)
到现在为止还挺好.
instance Num ((Num a) => Vector a) where
negate = fmap negate
Run Code Online (Sandbox Code Playgroud)
不行.我在第一行尝试了很多不同的变化,但GHC一直在抱怨.我想制作一个Vector包含数字的实例Num; 当然这应该是可能的吗?否则,我将不得不作出一个实例Int,Integer,Float,Double,等全部用相同的定义.
instance Num a => Num (Vector a) where
negate = fmap negate
Run Code Online (Sandbox Code Playgroud)
考虑编写其他方法.
(deriving (Eq, Show, Functor)如果你打开,你可以写-XDeriveFunctor.)