模式不匹配:Haskell

问题描述

我编写了一个函数,该函数将列表作为输入并输出其元素的总和,但出现以下错误:“模式匹配并不详尽 在“addfunc”的等式中:模式不匹配:[]"

这是我的代码

addfunc :: [Int] -> Int
addfunc(x:xs) = x + addfunc xs

解决方法

当模式匹配时,你必须列出所有可能的情况,以便你的程序知道对每个可能的输入做什么。在这里,可能的输入是所有整数列表,其中还包括一个空列表(零整数列表)。当输入有第一个元素和其他元素时,您的函数知道该怎么做;但是如果它收到一个空列表(它不能分解为第一个元素和其他元素),它就不知道该怎么办了。

要纠正它,只需提供缺失案例的匹配规则,例如

addfunc [] = 0