一个简单的Haskell运算符

时间:2013-02-01 14:27:38

标签: haskell

对于我的作业,我们必须编写一个如下所示的原始函数:

我的问题是Prim Eq,Prim Less,Prim Great应该能够采用任何类型的参数,例如String,Number,虽然它的返回类型总是布尔...所以我不知道如何指定类型a和湾

如果您知道如何处理此问题,请告知我们。我非常感谢你的帮助。 非常感谢你。

2 个答案:

答案 0 :(得分:4)

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)

ab不是类型;他们是价值观。我不确定你想在这里说明什么。

答案 1 :(得分:0)

您想看的是GADTs。但是,您可能无法拥有prim功能,但如果您可以将类型签名添加到构造函数,您可以获得更多类型安全性,例如Eq :: Value a -> Value a -> Value Bool和方式这样做是GADTs。