<div dir="ltr"><div class="gmail_extra">On Mon, Jan 7, 2013 at 6:02 PM, Pedram Nimreezi <span dir="ltr"><<a href="mailto:mc@majorcomputing.com" target="_blank">mc@majorcomputing.com</a>></span> wrote:<br><div class="gmail_quote">

<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div id=":5r">- When you say catch all, does that mean the first pattern matches are<br>
irrelevant for selective receive if the last match is a catch all,<br>
does this implicitly invalidate the selective receive optimization?</div></blockquote></div><br>Suppose you have patterns P1 and P2 and Messages M1 and M2 in that order in the mailbox and receive clause. Let PmM mean match pattern P against message M. Now two orders are possible:</div>

<div class="gmail_extra"><br></div><div class="gmail_extra" style>A:</div><div class="gmail_extra" style>P1mM1</div><div class="gmail_extra" style>P2mM1</div><div class="gmail_extra" style>P1mM2</div><div class="gmail_extra" style>

P2mM2</div><div class="gmail_extra" style><br></div><div class="gmail_extra" style>and B:</div><div class="gmail_extra" style>P1mM1</div><div class="gmail_extra" style>P1mM2</div><div class="gmail_extra" style>P2mM1</div>

<div class="gmail_extra" style>P2mM2</div><div class="gmail_extra" style><br></div><div class="gmail_extra" style>Erlang uses A as the match style, so if P1 or P2 is a catch all, M1 will always be picked before M2. Had Elrang used match style B then the order would matter, but it doesn't.</div>

<div class="gmail_extra" style><br></div><div class="gmail_extra" style><br></div><div class="gmail_extra"><div><br></div>-- <br>J.
</div></div>