在haskell中对数据类型调用函数
我怎么能把这东西叫做梅因在haskell中对数据类型调用函数,haskell,Haskell,我怎么能把这东西叫做梅因 data Poly' = Lit Integer | Add Poly' Poly' | Sub Poly' Poly' eval::Poly'->Integer eval (Lit n) = n eval (Add p1 p2) = (eval p1) + (eval p2) eval (Sub p1 p2) = (eval p1) - (eval p2) 我正在尝试这个,但它不起作用: main
data Poly' = Lit Integer |
Add Poly' Poly' |
Sub Poly' Poly'
eval::Poly'->Integer
eval (Lit n) = n
eval (Add p1 p2) = (eval p1) + (eval p2)
eval (Sub p1 p2) = (eval p1) - (eval p2)
我正在尝试这个,但它不起作用:
main = do
print(eval Add(2 3))
我很确定你的问题是加法需要两个多边形,不幸的是你用整数而不是多边形来调用它。Lit 2是多边形,2是整数。Try main=print。评估$Add Lit 2 Lit 3
使用parens表示您不太了解haskell函数的应用程序。您几乎不应该编写ab c,因为它实际上是一个b c,也就是a$b c,而前者看起来更像c函数应用程序,这是非常肯定的。它不工作怎么办?你收到了什么样的错误信息?让我们从里到外开始:表达式2 3没有意义。对于所有投反对票的人来说,上面所有的代码都是我自己的代码。仅供参考。@Chris Martin是的