<div dir="ltr"><div>It's not really a performance optimization, it's a difference in semantics.</div><div><br></div><div>This function in pseudo-erlang:</div><div><br></div><div>f(X) when A(X); B(X) -> Y(X);</div>
<div>f(X) -> Z(X).</div><div><br></div><div>Is operationally equivalent to this one:</div><div><br></div><div>f(X) when A(X) -> Y(X);</div><div>f(X) when B(X) -> Y(X);</div><div>f(X) -> Z(X).</div><div><br></div>
<div>Using orelse behaves differently, it doesn't treat the arguments quite so independently.</div><div><br></div><div><div>1> (fun () when hd([]) orelse true -> ok end)().</div><div>** exception error: no function clause matching erl_eval:'-inside-an-interpreted-fun-'()</div>
<div>2> (fun () when hd([]); true -> ok end)().</div><div>ok</div></div><div><br></div></div><div class="gmail_extra"><br><br><div class="gmail_quote">On Mon, May 19, 2014 at 3:05 PM, Steve Davis <span dir="ltr"><<a href="mailto:steven.charles.davis@gmail.com" target="_blank">steven.charles.davis@gmail.com</a>></span> wrote:<br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div dir="ltr">I can't imagine an output difference. Shouldn't "," =:= "andalso" and ";" =:= "orelse".<div>
<br></div><div>The difference appears to be a performance optimization - where would the "orelse shortcut" be incorrect?</div><div><br></div><div>(Could be I'm underthinking this)...<div class=""><br><div><br>
On Saturday, May 17, 2014 11:20:08 PM UTC-5, Adel Zhang wrote:<blockquote class="gmail_quote" style="margin:0;margin-left:0.8ex;border-left:1px #ccc solid;padding-left:1ex">hi, I am currently reading "learnyousomeerlang". In "Syntax in Functions"  
<br>chapter "guards" section, Fred said
<br>
<br><br></blockquote></div></div></div></div><br>_______________________________________________<br>
erlang-questions mailing list<br>
<a href="mailto:erlang-questions@erlang.org">erlang-questions@erlang.org</a><br>
<a href="http://erlang.org/mailman/listinfo/erlang-questions" target="_blank">http://erlang.org/mailman/listinfo/erlang-questions</a><br>
<br></blockquote></div><br></div>