2011-12-02 28 views
7

Tôi có một kiểu dữ liệu được gọi là Praat. Tôi muốn Praat là một phiên bản của Eq để hai số Praat s bằng nhau nếu và chỉ khi mx bằng nhau. Làm thế nào để làm điều này?Làm thế nào để tạo một loại một thể hiện của 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) = ........... 

Đây là cách tôi cố gắng xác định cá thể nhưng không hoạt động.

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

Trả lời

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

này là khá nhiều bản dịch trực tiếp về những gì bạn nói. x bằng y khi mx x == mx y.

+3

Tôi thậm chí còn viết nó '(==)' trên 'mx' –

Các vấn đề liên quan