haskell - 如何使类型成为 Eq 的实例

标签 haskell instance typeclass

我有一个名为 Praat 的数据类型.我要Praat成为 Eq 的一个实例这样两个 Praat s 相等当且仅当 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

最佳答案

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

这几乎是您所说的直接翻译。 x等于 ymx x == mx y .

关于haskell - 如何使类型成为 Eq 的实例,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8351936/

相关文章:

javascript - 为什么我不能在 JavaScript "isPrototypeOf"中使用对象的原型(prototype)?

scala - Scala 中的逆变问题

haskell - 从所有参数构建异构列表的构造函数

haskell - 使用类型族和泛型查找 Id 值

Python 类实例是重复的属性

java - 为什么总是newInstance或者fragment对象

带有 Integral 类型类的 Haskell 斐波那契列表

Haskell,了解 euler #3 的解决方案

scala - promise 的反义词是什么?

haskell - 相同数据的多个查找结构 : Memory duplication?