【发布时间】:2014-05-23 15:10:50
【问题描述】:
我正在尝试在 Haskell 中编写递归数据结构以表示表达式树。我有这种数据类型:
data Expr =
And(Expr, Expr ) |
Or (Expr, Expr ) |
(/) Expr Expr
我想对函数中的每个数据构造函数进行模式匹配:
toStringE :: Expr -> String
toStringE e = case e of
And(a,b) -> "and(" ++ toStringE a ++ ", " ++ toStringE b ++ ")"
Or(a,b) -> "or(" ++ toStringE a ++ ", " ++ toStringE b ++ ")"
(/) expr1 expr2 -> (toStringE expr1) ++ " / " ++ (toStringE expr2)
但是当我尝试编译时,我在 toStringE 函数的最后一行得到这个错误:
Parse error in pattern: (/)
你认为我做错了什么?
【问题讨论】:
-
一个建议:
data Expr = And Expr Expr | Or Expr Expr | (:/) Expr Expr。或data Expr = Expr `And` Expr | ...。但是请不要使用元组。一次也没有。 -
我明白你的意思了,谢谢!
标签: haskell