我只是想知道是否可以使用函数式编程语言(Haskell/F#/Caml)的模式匹配工具多次匹配相同的值。
想想下面的例子:
plus a a = 2 * a
plus a b = a + b
当使用两个相似的值(将存储在 中a
)调用函数时,将调用第一个变体。
这是一个更有用的应用程序(简化 AST)。
simplify (Add a a) = Mult 2 a
但是 Haskell 拒绝这些代码并警告我冲突的定义a
- 我必须做明确的 case/if-checks 来确定函数是否有相同的值。有什么技巧可以表明我要匹配的变量会出现多次吗?