在Haskell中没有解构的变体上的模式匹配

时间:2015-06-07 08:02:12

标签: haskell pattern-matching

在下面的代码中,函数disp是通过解构Sum b c然后立即重建来定义的。问题是,我不需要bc,只需要Sum类型的事实。

data Expr = Name String | Sum Expr Expr
    deriving(Show)

disp (Sum (Name a) (Sum b c)) = a ++ ":" ++ disp (Sum b c)

有没有一种方法可以在没有这种解构的情况下编写disp - 重建(以及bc绑定),或者这是编写这样一个函数的正确方法吗?

1 个答案:

答案 0 :(得分:14)

disp (Sum (Name a) s@(Sum _ _)) = a ++ ":" ++ disp s

@允许多个匹配同一件事