我有一个名为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
答案 0 :(得分:18)
instance Eq Praat where
x == y = mx x == mx y
这几乎是你所说的直接翻译。当x
时,y
等于mx x == mx y
。