模式不匹配:Haskell

Ano*_*ous -1 recursion haskell list ghci

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

这是我的代码:

addfunc :: [Int] -> Int
addfunc(x:xs) = x + addfunc xs
Run Code Online (Sandbox Code Playgroud)

Ama*_*dan 5

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

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

addfunc [] = 0
Run Code Online (Sandbox Code Playgroud)