sumAllDigits :: [ Int ] -> Int
sumAllDigits (x:xs)
|(x:xs) == [] = 0
|x >= 10 = sumDigits x + sumAllDigits xs
|x< 10 = x + sumAllDigits xs
REPORT:
*递归&GT; sumAllDigits [22,33]
***异常:Recursion.hs:(76,1) - (79,34):函数sumAllDigits中的非详尽模式
答案 0 :(得分:1)
我相信以下更改会为您纠正此问题。我更喜欢将空列表大小写为自己的实现来匹配。只是觉得我更明确。然后,如果x
小于>=
,sumAllDigits :: [ Int ] -> Int
sumAllDigits [] = 0
sumAllDigits (x:xs)
| x >= 10 = sumDigits x + sumAllDigits xs
| otherwise= x + sumAllDigits xs
将会通过{{1}},否则将覆盖这些情况。
{{1}}