问题描述
我编写了一个函数,该函数将列表作为输入并输出其元素的总和,但出现以下错误:“模式匹配并不详尽 在“addfunc”的等式中:模式不匹配:[]"
这是我的代码:
addfunc :: [Int] -> Int
addfunc(x:xs) = x + addfunc xs
解决方法
当模式匹配时,你必须列出所有可能的情况,以便你的程序知道对每个可能的输入做什么。在这里,可能的输入是所有整数列表,其中还包括一个空列表(零整数列表)。当输入有第一个元素和其他元素时,您的函数知道该怎么做;但是如果它收到一个空列表(它不能分解为第一个元素和其他元素),它就不知道该怎么办了。
要纠正它,只需提供缺失案例的匹配规则,例如
addfunc [] = 0