<div dir="ltr"><div class="gmail_default" style="font-family:georgia,serif;font-size:small">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:</div><div class="gmail_default" style="font-family:georgia,serif;font-size:small"><br></div><div class="gmail_default" style="font-family:georgia,serif;font-size:small">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.</div><div><br></div><blockquote style="margin:0px 0px 0px 40px;border:none;padding:0px"><div><div><font face="monospace, monospace">{-# OPTIONS_GHC -Wall #-}</font></div></div><div><div><font face="monospace, monospace"><br></font></div></div><div><div><font face="monospace, monospace">sumDigits :: [Integer] -> Integer</font></div></div><div><div><font face="monospace, monospace">sumDigits []     = 0</font></div></div><div><div><font face="monospace, monospace">sumDigits (n:ns)</font></div></div><div><div><font face="monospace, monospace">  | n < 10       = n + sumDigits ns</font></div></div><div><div><font face="monospace, monospace">  | n >= 10      = r + sumDigits (q : ns)</font></div></div><div><div><font face="monospace, monospace">  where (q, r)   = n `quotRem` 10</font></div></div><div><div><font face="monospace, monospace"><br></font></div></div><div><div><font face="monospace, monospace">sumList :: [Integer] -> Integer</font></div></div><div><div><font face="monospace, monospace">sumList []     = 0</font></div></div><div><div><font face="monospace, monospace">sumList (n:ns) = n + sumList ns</font></div></div></blockquote><div><div><br></div></div><div><div class="gmail_default" style="font-family:georgia,serif;font-size:small">​For completeness, here is the ghci transcript, with the location reported:</div><div class="gmail_default" style="font-family:georgia,serif;font-size:small"><br></div></div><blockquote style="margin:0 0 0 40px;border:none;padding:0px"><div><div class="gmail_default" style="font-size:small"><font face="monospace, monospace">Prelude> :load sumDigits.hs </font></div></div><div><div class="gmail_default" style="font-size:small"><p class=""><font face="monospace, monospace">[1 of 1] Compiling Main             ( sumDigits.hs, interpreted )</font></p></div></div><div><div class="gmail_default" style="font-size:small"><p class=""><font face="monospace, monospace"><br></font></p></div></div><div><div class="gmail_default" style="font-size:small"><p class=""><font face="monospace, monospace">sumDigits.hs:4:1: Warning:</font></p></div></div><div><div class="gmail_default" style="font-size:small"><p class=""><span style="font-family:monospace,monospace">    Pattern match(es) are non-exhaustive</span></p></div></div><div><div class="gmail_default" style="font-size:small"><p class=""><font face="monospace, monospace">    In an equation for ‘sumDigits’: Patterns not matched: _ : _</font></p></div></div><div><div class="gmail_default" style="font-size:small"><p class=""><font face="monospace, monospace">Ok, modules loaded: Main.</font></p></div></div></blockquote><div><div class="gmail_default" style="font-family:georgia,serif;font-size:small">​</div></div><div><div class="gmail_default" style="font-family:georgia,serif;font-size:small">​Thanks in advance for any guidance on this.</div><div class="gmail_default" style="font-family:georgia,serif;font-size:small">-jn-​</div><br></div><div><br></div>-- <br><div class="gmail_signature">Beauty of style and harmony and grace and good rhythm depend on simplicity. - Plato</div>
</div>