2015-12-16 50 views
3

我有以下几点:类型类为我对一个一个

data Pair a = 
    Pair a a 

而想要Eq类型类实例化它。

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

我得到的错误:

无法匹配,期望类型对一个 - >布尔“与实际类型布尔”

我是怎么写的了?

回答

6

因为

(==) :: a -> a -> Bool 

我们假定你是你的实现不工作(==)有一个参数((对X X')实际上一种说法是),它实际上需要两个。因此错误,

Couldn't match expected type Pair a -> Bool' with actual type Bool' 

(==)被部分应用,以便它,而它预计将返回一个布尔返回Pair a -> Bool

4

我认为这是正确的,但我不是100%确定的。

instance Eq a => Eq (Pair a) where 
    (==) (Pair x x') (Pair y y') = x == y && x' == y' 
+1

这是正确的:'Eq T'实例提供了一种方法来比较'T'类型的两个值。在你的情况下,这是两对。 – chi

相关问题