<div dir="ltr"><br><br><div class="gmail_quote">On Mon, Jul 21, 2008 at 12:24 PM, Thomas Lindgren <<a href="mailto:thomasl_erlang@yahoo.com">thomasl_erlang@yahoo.com</a>> wrote:<br><blockquote class="gmail_quote" style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;">
<div class="Ih2E3d"><br>
<br>
<br>
--- On Mon, 7/21/08, Richard A. O'Keefe <<a href="mailto:ok@cs.otago.ac.nz">ok@cs.otago.ac.nz</a>> wrote:<br>
<br>
> Bottom line:<br>
>       DON'T use 'or' or 'and' ANYWHERE.<br>
>       DON'T use 'orelse' or 'andalso' in<br>
> guards<br>
>       but instead stick to ';' and ','.<br>
<br>
</div>I normally agree with those recommendations, but with a couple of caveats:<br>
<br>
1. You can't nest ';', but you can nest orelse. This can be useful for macros and suchlike.<br>
<br>
2. I seem to recall that ';' is implemented by duplicating the clauses, while andalso/orelse is not. If so, andalso/orelse _may_ yield somewhat more compact code.</blockquote><div><br>3. Code using 'andalso' and 'orelse' can be cut paste copied as expression anywhere but ',' and ';' can be used only in guards (function, case, if).<br>
</div><blockquote class="gmail_quote" style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;"><br>
<br>
Both of these properties are basically accidents of history (ie, hacks that have been cast in stone).<br>
<br>
Best,<br>
<font color="#888888">Thomas<br>
</font><div><div></div><div class="Wj3C7c"><br>
<br>
<br>
_______________________________________________<br>
erlang-questions mailing list<br>
<a href="mailto:erlang-questions@erlang.org">erlang-questions@erlang.org</a><br>
<a href="http://www.erlang.org/mailman/listinfo/erlang-questions" target="_blank">http://www.erlang.org/mailman/listinfo/erlang-questions</a><br>
</div></div></blockquote></div><br><br clear="all"><br>-- <br>--Hynek (Pichi) Vychodil
</div>