Не исчерпывающая рекурсия на Haskell

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

1 ответ

Я полагаю, что следующие изменения исправят это для вас. Я предпочитаю делать пустой список так, чтобы его собственная реализация соответствовала. Просто чувствует себя более явным для меня. А потом, так как x будет падать через >= если оно меньше, иначе будет охватывать эти случаи.

sumAllDigits :: [ Int ] -> Int  
sumAllDigits [] = 0
sumAllDigits (x:xs)  
   | x >= 10  = sumDigits x + sumAllDigits xs  
   | otherwise= x + sumAllDigits xs  
Другие вопросы по тегам