小编Gor*_*aci的帖子

如何在Haskell中对中缀/运算符进行模式匹配?

我试图在Haskell中编写一个递归数据结构,以表示一个表达式树.我有这种数据类型:

data Expr =
    And(Expr, Expr ) |
    Or (Expr, Expr ) |
    (/) Expr Expr
Run Code Online (Sandbox Code Playgroud)

我想模式匹配函数中的每个数据构造函数:

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)
Run Code Online (Sandbox Code Playgroud)

但是当我尝试编译时,我在toStringE函数的最后一行得到了这个错误:

Parse error in pattern: (/)
Run Code Online (Sandbox Code Playgroud)

你觉得我做错了什么?

haskell

3
推荐指数
1
解决办法
582
查看次数

标签 统计

haskell ×1