3
我有以下几点:类型类为我对一个一个
data Pair a =
Pair a a
而想要Eq类型类实例化它。
instance Eq (Pair a) where
(==) (Pair x x') = x == x'
我得到的错误:
无法匹配,期望类型对一个 - >布尔“与实际类型布尔”
我是怎么写的了?
我有以下几点:类型类为我对一个一个
data Pair a =
Pair a a
而想要Eq类型类实例化它。
instance Eq (Pair a) where
(==) (Pair x x') = x == x'
我得到的错误:
无法匹配,期望类型对一个 - >布尔“与实际类型布尔”
我是怎么写的了?
因为
(==) :: a -> a -> Bool
我们假定你是你的实现不工作(==)有一个参数((对X X')实际上一种说法是),它实际上需要两个。因此错误,
Couldn't match expected type Pair a -> Bool' with actual type Bool'
(==)
被部分应用,以便它,而它预计将返回一个布尔返回Pair a -> Bool
。
我认为这是正确的,但我不是100%确定的。
instance Eq a => Eq (Pair a) where
(==) (Pair x x') (Pair y y') = x == y && x' == y'
这是正确的:'Eq T'实例提供了一种方法来比较'T'类型的两个值。在你的情况下,这是两对。 – chi