2015-12-16 48 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

相關問題