这个问题在这里已有答案:
我有两个代码片段引发相同的错误:
Prelude> sum' [] = 0
Prelude> sum' (x:xs) = x + sum' xs
Prelude> sum' [1,2,3,4,5]
*** Exception: <interactive>:142:1-25: Non-exhaustive patterns in function sum'
以及以下内容:
Prelude> prod [] = 1
Prelude> prod (x:xs) = x * (prod xs)
Prelude> prod [1,2,3,4,5]
*** Exception: <interactive>:139:1-27: Non-exhaustive patterns in function prod
我必须错过一个模式,但它是什么?另外,我这样的错误怎么办?在使用模式匹配定义函数时,我应该怎么想? (我要求方法/技术)
1 回答
要创建具有模式匹配的函数,或者在ghci的命令行中使用多行,您应该使用
{}
并在您的情况下与;
分开:否则你只会将一个等式(在这种情况下是最后一个)绑定到函数名
sum'
,这就是为什么你得到一个模式匹配失败的原因