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

Haskell - Pattern matching: How to determine what pattern to use based on two input values

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

fun x _ = 1
fun _ 0 = 2
fun x y = 3

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

但是我看不出它是如何工作的,在我看来,任何输入值都可以使用其中的任何模式。

我可能看错了,所以谁能告诉我这个问题以及为什么 fun 0 0fun 1 0 都生成 1?当加在一起时,当然会得到结果 2。

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