簡體   English   中英

在Haskell中對數據類型調用函數

[英]Calling functions on data types in 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 = do
print(eval Add(2 3))

嘗試main = print . eval $ Add (Lit 2) (Lit 3) main = print . eval $ Add (Lit 2) (Lit 3)

您對parens的使用表明您不太了解haskell函數的應用程序。 您幾乎不應該編寫a(bc)因為它實際上a (bc) ,即a $ bc而前者看起來更像是C函數應用程序,而肯定不是。

我很確定您的問題是,不幸的是Add需要兩個Poly,而您使用的是int而不是Poly。 亮2是Poly',2是int。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM