<div dir="ltr"><br><div class="gmail_extra"><br><div class="gmail_quote">On Tue, Jan 31, 2017 at 12:56 PM, Li-yao Xia <span dir="ltr"><<a href="mailto:li-yao.xia@ens.fr" target="_blank">li-yao.xia@ens.fr</a>></span> wrote:<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
A "default branch" seems to correspond to a wildcard overlapping a previous pattern. This would be a warning symmetrical to -Woverlapping-patterns.<br>
<br>
- A wildcard which overlaps with a pattern below it makes the latter unreachable, which is certainly not intentional. This is caught by -Woverlapping-patterns.<br>
<br>
  case x of<br>
    _ -> y<br>
    C -> z<br>
<br>
- A wildcard which overlaps with a pattern above it has the risk mentionned in this thread, that it will catch any new constructor added to the corresponding ADT, and thus the programmer may forget to update some case expressions when the new constructor is to be handled differently.<br>
<br>
  case x of<br>
    C -> y<br>
    _ -> z<span class="HOEnZb"><font color="#888888"><br>
<br>
Li-yao</font></span><div class="HOEnZb"><div class="h5"><br></div></div></blockquote><div><br></div><div>Excellent. That also elegantly covers the case of functions which ignore the argument, like "const x _ = x". Good thinking!</div><div><br></div><div>--Will</div><div><br></div><div><br></div></div></div></div>