我该怎么称呼这个东西?
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))
答案 0 :(得分:6)
尝试main = print . eval $ Add (Lit 2) (Lit 3)
您对parens的使用表明您不太了解haskell功能应用程序。你几乎不应该写a(b c)
,因为它真的a (b c)
,即a $ b c
,而前者看起来更像C函数应用程序,它肯定不是。
答案 1 :(得分:1)
我很确定你的问题是,添加需要两个Poly,不幸的是你用int而不是Poly来调用它。 Lit 2是Poly',2是int。