我得到了以下内容:
data Pair a =
Pair a a
并希望将Eq类型类实例化为它。
instance Eq (Pair a) where
(==) (Pair x x') = x == x'
我收到错误:
无法匹配预期类型对a - >布尔'实际类型为Bool'
我写错了什么?
答案 0 :(得分:6)
您的实施不起作用,因为
(==) :: a -> a -> Bool
你假设(==)接受一个参数((对x x')实际上是一个参数)它实际上需要两个。因此错误,
Couldn't match expected type Pair a -> Bool' with actual type Bool'
(==)
已部分应用,因此它返回Pair a -> Bool
,而预计会返回Bool。
答案 1 :(得分:4)
我认为这是正确的,但我不是百分百肯定。
instance Eq a => Eq (Pair a) where
(==) (Pair x x') (Pair y y') = x == y && x' == y'