Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/vb.net/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在haskell中对数据类型调用函数_Haskell - Fatal编程技术网

在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是的