0
我得到一個匹配錯誤:哈斯克爾 - 類錯誤應用:類型不匹配
當我嘗試在標線執行此代碼Expression : parseExpr (append p e) es
Term : parseExpr
Type : Expr -> String
Does not match : a -> b -> c
:
data Expr = Atom String | Var String | Pred String [Expr] | Expr String
append :: String -> String -> String
append a b = a++b
parseExpr :: Expr -> String
parseExpr (Atom a) = a
parseExpr (Var x) = x
parseExpr (Pred p (e:es)) = parseExpr (append p e) es -- ERROR HERE
儘管電子始終將成爲我上面陳述的Expr對象定義中的一個字符串。有沒有辦法說明這一點?
錯誤消息似乎對我來說足夠清晰。 'parseExpr'的類型是'Expr - > String',但是你用兩個參數來調用它。在'parseExpr(Pred p(e:es))= ...'中, – kosmikus 2014-11-22 13:03:29
=''p'將成爲'String','e'將成爲'Expr','es'將成爲'[Expr]'。你爲什麼認爲'e'會是一個'String'? – ErikR 2014-11-22 13:19:22
@ user5402因爲Expr總是可以細分爲一個字符串,我猜?這不正確嗎?我正在嘗試爲Expr執行toString。 – SalmaFG 2014-11-22 13:23:48