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

REPORT:
*Recursion> sumAllDigits [22,33] *** 例外: Recursion.hs:(76,1)-(79,34): 関数 sumAllDigits の非網羅的なパターン

4

1 に答える 1

1

次の変更により、これが修正されると思います。私は空のリストのケースを独自の実装で照合することを好みます。私にはもっとはっきりしているように感じます。そして、より小さい場合xはドロップするので、そうでない場合はそれらのケースをカバーします。>=

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