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
| n < 10 = n + sumDigits ns
| n >= 10 = r + sumDigits (q : ns)
where (q, r) = n `quotRem` 10
sumList :: [Integer] -> Integer
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