【发布时间】:2011-04-19 02:58:46
【问题描述】:
想声明
data (Coord a) => Triangle a = Triangle{t0 :: a, t1 :: a, t2 :: a}
但是我得到了
Geometry.hs:15:19:种类不匹配 预期种类
* -> *', butp' 有种类*' In the class declaration forCoord'
其中坐标定义为
class (Traversable p, Functor p, Foldable p, Applicative p) => Coord p where
getComponents :: Num a => p a -> [a]
getComponents = toList
fromComponents :: Num a => [a] -> p a
magSq :: Num a => p a -> a
magSq = Prelude.sum . map (\x -> x * x) . getComponents
dotProduct :: Num a => p a -> p a -> a
dotProduct a b = Prelude.sum $ zipWith (*) (getComponents a) (getComponents b)
有什么想法吗?
PS。代码是对 Data.SG 包中的内容稍作修改的版本
【问题讨论】: