对于我的任务,我们必须编写一个如下所示的原始函数:
我的问题是 Prim Eq、Prim Less、Prim Great 应该能够接受任何类型的参数,例如字符串、数字,尽管它的返回类型始终是布尔值......所以我不知道如何指定类型 a 和 b。
如果您知道如何处理此问题,请告诉我。我真的很感谢你的帮助。非常感谢你。
对于我的任务,我们必须编写一个如下所示的原始函数:
我的问题是 Prim Eq、Prim Less、Prim Great 应该能够接受任何类型的参数,例如字符串、数字,尽管它的返回类型始终是布尔值......所以我不知道如何指定类型 a 和 b。
如果您知道如何处理此问题,请告诉我。我真的很感谢你的帮助。非常感谢你。
prim Less [Number a, Number b] = Bool (a < b)
prim Less [String a, String b] = Bool (a < b)
prim Great [Number a, Number b] = Bool (a > b)
prim Great [String a, String b] = Bool (a > b)
a
并且b
不是类型;他们是价值观。我不确定你想在这里指定什么。
您要查看的是GADTs。但是,您可能无法拥有您的prim
功能,但如果您可以向构造函数添加类型签名,您可以获得更多的类型安全性,例如Eq :: Value a -> Value a -> Value Bool
GADT。