On 19/03/2008, <b class="gmail_sendername">Richard A. O'Keefe</b> <<a href="mailto:ok@cs.otago.ac.nz">ok@cs.otago.ac.nz</a>> wrote:<div><span class="gmail_quote"></span><blockquote class="gmail_quote" style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;">
<br> I've forgotten who it was who proposed simply allowing multiple<br> pattern/guard<br> pairs on cases:<br> <br>        case E<br>          of P1 when E1 ;<br>             P2 when E2 -> B2<br>           ; P3 when E3 ;<br>
             P4 when E4 -> B4<br>        end<br> <br>        f(P1...) when E1 ;<br>        f(P2...) when E2 -> B2;<br>        f(P3...) when E3 ;<br>        f(P4...) when E4 -> B4.<br> <br> The syntax could be better, but this extension *does* satisfy all the<br>
 use-cases<br> that anyone has actually mentioned wanting in a real program and<br> *doesn't* need<br> major revisions to the compiler or virtual machine and *doesn't* turn<br> clause<br> selection into an exponential-time horror.</blockquote>
<div><br>Those were the reasons that I suggested it, plus that guards are a part of pattern matching and should be directly connected  to the patterns to which they refer. Also, it was an off the top of my head minimal syntax change so there is no doubt the syntax can be improved but I wouldn't make it to different or it could cloud the meaning.<br>
<br>Robert<br><br></div></div>