我的配对的类型为

时间:2015-12-16 10:29:24

标签: haskell

我得到了以下内容:

data Pair a =
  Pair a a

并希望将Eq类型类实例化为它。

instance Eq (Pair a) where
  (==) (Pair x x') = x == x'

我收到错误:

无法匹配预期类型对a - >布尔'实际类型为Bool'

我写错了什么?

2 个答案:

答案 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'