haskell - 在 Haskell 中将实例定义为受限类型
问题描述
我正在使用以下数据类型:
data Exp a =
|Const a
|Simetrico (Exp a)
|Mais (Exp a) (Exp a)
|Menos (Exp a) (Exp a)
|Mult (Exp a) (Exp a)
但a
应该是数字类型。我会这样定义Eq
:
instance Eq (Exp a) where
a == b | ... = True
| otherwise = False
但我没有说 mya
是数字类型,所以 ghci 抱怨,我该如何解决这个问题?
解决方案
您向instance
子句添加类型约束:
instance Num a => Eq (Exp a) where
a == b | ... = True
| otherwise = False
所以现在你可以假设(在 的范围内instance
)它a
是类型类的一个实例Num
。
推荐阅读
- list - 检查 nil 指针取消引用的正确方法是什么?
- javascript - 如何在 php 端回显来自 javascript 的发布数据以进行开发?
- python - 用于文档的 Python 接口
- java - 如何退出 switch 语句并返回到 While 循环?
- node.js - 异步功能适用于 Postman,但在测试时不适用
- c++ - 为什么 COM 指针参数转换为 void 而不是 IUnknown?
- javascript - 使用dottie js访问数组中的元素(使用索引)
- scala - 如何在 Scala 测试中检查“任一”结果?
- excel - 如何在单击弹出菜单(右键单击)上的“删除”之前获取值?
- repast-simphony - 是否可以使用服务器启动器可视化显示?