Haskell递归非穷举

时间:2014-12-30 00:46:59

标签: haskell non-exhaustive-patterns

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中的非详尽模式

1 个答案:

答案 0 :(得分:1)

我相信以下更改会为您纠正此问题。我更喜欢将空列表大小写为自己的实现来匹配。只是觉得我更明确。然后,如果x小于>=sumAllDigits :: [ Int ] -> Int sumAllDigits [] = 0 sumAllDigits (x:xs) | x >= 10 = sumDigits x + sumAllDigits xs | otherwise= x + sumAllDigits xs 将会通过{{1}},否则将覆盖这些情况。

{{1}}