<div dir="ltr"><div>I'm not interested in so-called "it's for something but the other." By typing some code in both shell, I got an error message in SML/NJ when typing the following code,</div><div><br></div><div>> true andalso nil;</div><div><br></div><div>though I got similar code working smoothly in Erlang when typing the following code,</div><div><br></div><div>> is_list(true andalso []). %% The shell reported `true`.<br></div><div><br></div><div>So, what's the meaning of "being copied into?" Is it rigid that you borrow a word from a language and keep all the nature of it? I don't think so.<br></div><div><br></div><div><br></div></div><div class="gmail_extra"><br><div class="gmail_quote">On Tue, Jul 24, 2018 at 12:58 AM, Richard O'Keefe <span dir="ltr"><<a href="mailto:raoknz@gmail.com" target="_blank">raoknz@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"><div class="gmail_default" style="font-family:monospace,monospace">Yes, I know the RHS of 'andalso' is not typed in Erlang.</div><div class="gmail_default" style="font-family:monospace,monospace">So what?  The point is that when 'andalso' and 'orelse'</div><div class="gmail_default" style="font-family:monospace,monospace">were copied into Erlang from Standard ML, they did not</div><div class="gmail_default" style="font-family:monospace,monospace">drag the obsolete baggage of being ersatzes for WHEN and</div><div class="gmail_default" style="font-family:monospace,monospace">UNLESS in with them.  They were added to provide</div><div class="gmail_default" style="font-family:monospace,monospace">non-strict AND and OR for Boolean expressions, and that</div><div class="gmail_default" style="font-family:monospace,monospace">is all they were added for, just as 'and' and 'or' were</div><div class="gmail_default" style="font-family:monospace,monospace">added to provide strict AND and OR.</div><div class="gmail_default" style="font-family:monospace,monospace"><br></div><div class="gmail_default" style="font-family:monospace,monospace">They were not added to provide a cryptic way to obfuscate</div><div class="gmail_default" style="font-family:monospace,monospace">conditionals you could already easily write.</div><div class="gmail_default" style="font-family:monospace,monospace"><br></div><div class="gmail_default" style="font-family:monospace,monospace"><br></div></div><div class="HOEnZb"><div class="h5"><div class="gmail_extra"><br><div class="gmail_quote">On 24 July 2018 at 03:48, 黃耀賢 (Yau-Hsien Huang) <span dir="ltr"><<a href="mailto:g9414002.pccu.edu.tw@gmail.com" target="_blank">g9414002.pccu.edu.tw@gmail.<wbr>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">Though the RHS of andalso is not typed in Erlang.<br></div><div class="gmail_extra"><br><div class="gmail_quote">On Mon, Jul 23, 2018 at 10:35 PM, Richard O'Keefe <span dir="ltr"><<a href="mailto:raoknz@gmail.com" target="_blank">raoknz@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"><div class="gmail_default" style="font-family:monospace,monospace">No, that is *not* why andalso/2 was added to the language.</div><div class="gmail_default" style="font-family:monospace,monospace">The very spelling of the token, 'andalso', was copied from</div><div class="gmail_default" style="font-family:monospace,monospace">a language, Standard ML, which is strictly typed and does</div><div class="gmail_default" style="font-family:monospace,monospace">not allow <test> andalso <action>.</div></div><div class="m_4101103421691623860m_-1743385719883487788HOEnZb"><div class="m_4101103421691623860m_-1743385719883487788h5"><div class="gmail_extra"><br><div class="gmail_quote">On 23 July 2018 at 23:25, 黃耀賢 (Yau-Hsien Huang) <span dir="ltr"><<a href="mailto:g9414002.pccu.edu.tw@gmail.com" target="_blank">g9414002.pccu.edu.tw@gmail.co<wbr>m</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"><div>IMO, it's meaningful.</div><div><br></div><div>Think that,</div><div><br></div><div>Msg /= nil and io:fwrite("blah, blah, ...~n"). %% It won't build a boolean expression.</div><div><br></div><div>But</div><div><br></div><div>Msg /= nil andalso io:fwrite("blah, blah, ...~n"). %% Confirm the Msg is nothing and also say "blah, blah, ..."</div><div><br></div><div>I think the reason why andalso/2 was built. Though, andalso/2 won't be used for a general default value usage like what we saw in JS or Perl, because the first argument of andalso/2 must be either true or false.<br></div><div><br></div><div><br></div></div><div class="gmail_extra"><br><div class="gmail_quote"><div><div class="m_4101103421691623860m_-1743385719883487788m_-8549462313522719280h5">On Mon, Jul 23, 2018 at 7:05 PM, Jesper Louis Andersen <span dir="ltr"><<a href="mailto:jesper.louis.andersen@gmail.com" target="_blank">jesper.louis.andersen@gmail.c<wbr>om</a>></span> wrote:<br></div></div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div><div class="m_4101103421691623860m_-1743385719883487788m_-8549462313522719280h5"><div dir="ltr"><div class="gmail_default" style="font-family:arial,helvetica,sans-serif">On Sun, Jul 22, 2018 at 9:09 PM Jachym Holecek <<a href="mailto:freza@circlewave.net" target="_blank">freza@circlewave.net</a>> wrote:<br></div><div class="gmail_quote"><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"># Viktor Söderqvist 2018-07-22:<span><span><br>> <br>
>     Msg /= undefined andalso io:format("Message: ~s~n", [Msg]),<br>
> <br>
> I this good or bad style?<br>
<br></span>
It is horrible style. Pain to read, pain to modify, pain to reason about.<br>
<br>
Simple clear question deserves a simple clear answer. :-)<br>
<br></span></blockquote></div><div class="gmail_quote"><br></div><div class="gmail_quote"><div style="font-family:arial,helvetica,sans-serif" class="gmail_default">​I don't like the style either, mostly because it messes with the types. andalso and orelse expects boolean expressions, but the style used breaks that format. However, something like</div><div style="font-family:arial,helvetica,sans-serif" class="gmail_default"><br></div><div style="font-family:arial,helvetica,sans-serif" class="gmail_default">[x || Msg /= undefined]</div><div style="font-family:arial,helvetica,sans-serif" class="gmail_default"><br></div><div style="font-family:arial,helvetica,sans-serif" class="gmail_default">doesn't.​</div><span class="m_4101103421691623860m_-1743385719883487788m_-8549462313522719280m_2125824323867726513HOEnZb"><font color="#888888"><br clear="all"></font></span></div><span class="m_4101103421691623860m_-1743385719883487788m_-8549462313522719280m_2125824323867726513HOEnZb"><font color="#888888"><br>-- <br><div dir="ltr" class="m_4101103421691623860m_-1743385719883487788m_-8549462313522719280m_2125824323867726513m_-5158924960273875965gmail_signature" data-smartmail="gmail_signature">J.</div></font></span></div>
<br></div></div><span><span>______________________________<wbr>_________________<br>
erlang-questions mailing list<br>
<a href="mailto:erlang-questions@erlang.org" target="_blank">erlang-questions@erlang.org</a><br>
<a href="http://erlang.org/mailman/listinfo/erlang-questions" rel="noreferrer" target="_blank">http://erlang.org/mailman/list<wbr>info/erlang-questions</a><br>
<br></span></span></blockquote></div><span class="m_4101103421691623860m_-1743385719883487788m_-8549462313522719280HOEnZb"><font color="#888888"><br><br clear="all"><br>-- <br><div class="m_4101103421691623860m_-1743385719883487788m_-8549462313522719280m_2125824323867726513gmail_signature" data-smartmail="gmail_signature"><div><br></div>Best Regards.<div><br></div><div>--- Y-H. H.</div><div><br></div></div>
</font></span></div><span>
<br>______________________________<wbr>_________________<br>
erlang-questions mailing list<br>
<a href="mailto:erlang-questions@erlang.org" target="_blank">erlang-questions@erlang.org</a><br>
<a href="http://erlang.org/mailman/listinfo/erlang-questions" rel="noreferrer" target="_blank">http://erlang.org/mailman/list<wbr>info/erlang-questions</a><br>
<br></span></blockquote></div><br></div><span class="m_4101103421691623860HOEnZb"><font color="#888888">
</font></span></div></div></blockquote></div><span class="m_4101103421691623860HOEnZb"><font color="#888888"><br><br clear="all"><br>-- <br><div class="m_4101103421691623860m_-1743385719883487788gmail_signature" data-smartmail="gmail_signature"><div><br></div>Best Regards.<div><br></div><div>--- Y-H. H.</div><div><br></div></div>
</font></span></div>
<br>______________________________<wbr>_________________<br>
erlang-questions mailing list<br>
<a href="mailto:erlang-questions@erlang.org" target="_blank">erlang-questions@erlang.org</a><br>
<a href="http://erlang.org/mailman/listinfo/erlang-questions" rel="noreferrer" target="_blank">http://erlang.org/mailman/list<wbr>info/erlang-questions</a><br>
<br></blockquote></div><br></div>
</div></div></blockquote></div><br><br clear="all"><br>-- <br><div class="gmail_signature" data-smartmail="gmail_signature"><div><br></div>Best Regards.<div><br></div><div>--- Y-H. H.</div><div><br></div></div>
</div>