【发布时间】:2017-07-09 15:04:27
【问题描述】:
我有一个小的 Erlang 函数来比较两个列表是否相等:
myEq([], []) -> true;
myEq([X|Xs], [X|Ys]) -> myEq(Xs, Ys);
myEq(_, _) -> false.
比较发生在第 2 行,[X|Xs] 的 X 始终绑定到第一个列表的第一个元素,[X|Ys] 仅在两个列表的第一个元素相等时才匹配。
如果我在 Haskell 中尝试此操作,我会收到一条错误消息:“x的定义冲突”。
Haskell 中一个可能的解决方案是:
myEq (x:xs) (y:ys) = if x == y then myEq xs ys else False
但我想知道是否可以在 Haskell 中使用模式匹配来做到这一点?
【问题讨论】:
标签: haskell erlang pattern-matching