
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