Equals在Haskell中的基本实现
我有点像Equals在Haskell中的基本实现,haskell,Haskell,我有点像 data Example = Ex Integer 我将如何为此实现equals 我得到的最远的结果是 instance Eq Example where (Ex _) == (Ex _) = True 但这是错误的,因为这总是正确的。我可以放置一个整数的具体实例,而不是“\u1”字符,但是我必须对每个整数都这样做 谢谢大家抽出时间 但我必须对每个整数都这样做 No,因为Integer是Eqtypeclass的成员。因此,我们可以利用为整数实现的(==),从而“
data Example =
Ex Integer
我将如何为此实现equals
我得到的最远的结果是
instance Eq Example where
(Ex _) == (Ex _) = True
但这是错误的,因为这总是正确的。我可以放置一个整数的具体实例,而不是“\u1”字符,但是我必须对每个整数都这样做
谢谢大家抽出时间
但我必须对每个整数都这样做
No,因为Integer
是Eq
typeclass的成员。因此,我们可以利用为整数
实现的(==)
,从而“解包”Ex
数据构造函数,并检查参数是否相等:
instance Eq Example where
Ex x == Ex y = x == y
Eq
的自动实现指定,如果两个项具有相同的数据构造函数,则它们是相同的,并且参数相等(使用(==)
函数)
data Example = Ex Integer deriving Eq