如何使类型成为Eq的实例

时间:2011-12-02 04:52:49

标签: haskell instance typeclass

我有一个名为Praat的数据类型。我希望Praat成为Eq的一个实例,这样当且仅当Praat相等时,两个mx才相等。如何做到这一点?

-- data type
data Praat t = Praat [k] [(k,k,k,k)] 

-- praat gives the maximum frequency
Praat t -> Int
mx (Praat [] _) = 0
mx (Praat (e:es) pt) = ...........

这就是我尝试定义实例的方法,但它无法正常工作。

-- I want to make Praat instance of Eq so that two Praat are equal
-- when their respective `mx` are equal
instance Eq Praat where
   mx :: (Praat k)->Int
   (mx k) == (mx k) = True
   _ == _ = False

1 个答案:

答案 0 :(得分:18)

instance Eq Praat where
    x == y = mx x == mx y

这几乎是你所说的直接翻译。当x时,y等于mx x == mx y