I understand the meaning of the warning, but got it in a situation I didn't expect. The following source file contains the simplest case I could construct quickly to illustrate my question:

Why does the first function (sumDigits) get the "non-exhaustive" warning? It contains a definition for both empty and non-empty arguments, just as the second (sumList), which does not get a warning.

{-# OPTIONS_GHC -Wall #-}

sumDigits :: [Integer] -> Integer
sumDigits []     = 0
sumDigits (n:ns)
  | n < 10       = n + sumDigits ns
  | n >= 10      = r + sumDigits (q : ns)
  where (q, r)   = n `quotRem` 10

sumList :: [Integer] -> Integer
sumList []     = 0
sumList (n:ns) = n + sumList ns

​For completeness, here is the ghci transcript, with the location reported:

Prelude> :load sumDigits.hs 

[1 of 1] Compiling Main             ( sumDigits.hs, interpreted )


sumDigits.hs:4:1: Warning:

    Pattern match(es) are non-exhaustive

    In an equation for ‘sumDigits’: Patterns not matched: _ : _

Ok, modules loaded: Main.

​Thanks in advance for any guidance on this.
-jn-​


--
Beauty of style and harmony and grace and good rhythm depend on simplicity. - Plato