Comment faire un type d'une instance de l'Égaliseur

J'ai un type de données appelé Praat. Je veux Praat à être une instance de Eq de sorte que les deux Praats sont égaux si et seulement si mx sont égaux. Comment fait-on cela?

-- 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) = ...........

C'est de cette façon que je suis en train d'essayer de définir l'instance, mais il ne fonctionne pas.

-- 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

OriginalL'auteur Eddy Freeman | 2011-12-02