0
sumAllDigits :: [ Int ] -> Int  
sumAllDigits (x:xs)  
   |(x:xs) == []  = 0  
   |x >= 10  = sumDigits x + sumAllDigits xs  
   |x< 10    = x + sumAllDigits xs  

报告:
*Recursion> sumAllDigits [22,33] *** 例外:Recursion.hs:(76,1)-(79,34):函数 sumAllDigits 中的非详尽模式

4

1 回答 1

1

我相信以下更改将为您解决此问题。我更喜欢将空列表案例设为自己的实现来匹配。只是对我来说感觉更明确。然后,sincex将通过>=if 它小于,否则将覆盖那些情况。

sumAllDigits :: [ Int ] -> Int  
sumAllDigits [] = 0
sumAllDigits (x:xs)  
   | x >= 10  = sumDigits x + sumAllDigits xs  
   | otherwise= x + sumAllDigits xs  
于 2014-12-30T00:48:56.000 回答