如何使一个类型成为Eq
问题描述:
的一个实例我有一个名为Praat
的数据类型。我希望Praat
是Eq
的一个实例,因此当且仅当mx
相等时,两个Praat
相等。如何做到这一点?如何使一个类型成为Eq
-- 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
答
instance Eq Praat where
x == y = mx x == mx y
这是非常你所说的直接转换。 x
等于y
当mx x == mx y
。
我甚至会在'mx'上写'(==)' –