Haskell自定义Point数据类型如何编写Eq实例以支持elem函数对比
Haskell Point类型Eq实例编写方案
elem函数的类型约束要求传入的元素类型必须实现Eq类型类才能进行相等性判断,针对你定义的Point类型,有两种实现方式:
- 方案1:自动推导实现(适用于默认相等逻辑的场景)
编译器可以自动为你的Point类型生成符合预期的相等判断逻辑,仅需要在类型定义末尾加deriving Eq即可:
自动生成的逻辑会判断两个data Point = Point Int Int deriving EqPoint相等当且仅当它们的两个Int参数分别相等,完全适配你当前的坐标对比需求。 - 方案2:手动实现实例(适用于需要自定义相等规则的场景)
如果你后续需要调整相等判断的逻辑,也可以手动编写Eq实例:instance Eq Point where (Point x1 y1) == (Point x2 y2) = x1 == x2 && y1 == y2
两种方案任选其一添加到你的代码中,drawField函数里的elem调用就能正常运行了。
内容的提问来源于stack exchange,提问作者user17441617
相关产品推荐
相关产品推荐

