Haskell - 模式匹配:如何根据两个输入值确定要使用的模式

0 haskell functional-programming wildcard pattern-matching

好的,所以我正在学习Haskell的基础知识,最近我做了一个模拟考试,其中一个问题是使用模式匹配和通配符作为函数的一部分来生成不同的结果.创建的函数如下:

fun x _ = 1
fun _ 0 = 2
fun x y = 3
Run Code Online (Sandbox Code Playgroud)

现在的问题是添加乐趣0 0 + fun 1 0这两者显然都匹配生成1的模式.

但是我看不出它是如何工作的,就像我看到的那样,任何输入值都可以使用它们中的任何一种模式.

我很可能看错了,所以任何人都可以通过这个问题跟我说话,为什么乐趣0 0乐趣1都生成1?当加在一起时,当然会给出结果2.

Lee*_*Lee 6

模式按从上到下的顺序进行匹配,因此fun x _匹配任何内容.变量x无条件地绑定到第一个参数,并且_无条件地匹配而不进行绑定.由于第一个模式匹配,因此不会尝试其他两个模式.