出于学习目的,我用gcd'
重复减法来定义函数:
gcd' :: Integer -> Integer -> Integer
gcd' x y
| x == y = x
| x < y = gcd' x (y - x)
| y < x = gcd' (x - y) y
(Prelude的gcd功能)
问题是 GHC 抱怨它:
模式匹配并非详尽无遗。在‘gcd’的方程中:
“Integer”、“Integer”类型的模式不匹配:_ _
我见过一条关于数字的数学定律:
对于所有数字 𝑥 和 𝑦,𝑥 小于 𝑦,或 𝑦 小于 𝑥,或 𝑥 等于 𝑦。
从这个意义上来说,这三个守卫涵盖了所有可能的情况。为什么 GHC 关注这个定义?