<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>