<div dir="ltr"><div><div><div>Sorry, one more change to my original mail. I mistakenly assumed that &#39;unless&#39; was not returning the last value when the condition was false (based on some symptoms I was seeing), but I didn&#39;t explicitly test this, and my lisp is not good enough to deduce this by looking at the defmacro expression in ${LOGONROOT]/dot.emacs. In fact, it *does* appear to return the last value, but the difference from the default definition is that LOGON-unless returns the value of the condition when it&#39;s non-nil, rather than returning nil.<br><br></div>; standard unless<br></div>(unless nil 1 2 3)  ; returns: 3<br>(unless &#39;value 1 2 3)  ; returns: nil<br><br></div>; LOGON unless<br><div><div><div>(unless nil 1 2 3)  ; returns: 3<br>(unless &#39;value 1 2 3)  ; returns: value<br><div><div><div class="gmail_extra"><br></div><div class="gmail_extra">So when LOGON-unless is used in constructing a list, it will (I think) append the value of the condition to the list instead of nothing.</div><div class="gmail_extra"><br></div><div class="gmail_extra"><br><div class="gmail_quote">On Tue, Dec 19, 2017 at 10:18 AM, Michael Wayne Goodman <span dir="ltr">&lt;<a href="mailto:goodmami@uw.edu" target="_blank">goodmami@uw.edu</a>&gt;</span> wrote:<br><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"><div dir="ltr"><div class="gmail_extra"><div class="gmail_quote"><span class="gmail-">On Tue, Dec 19, 2017 at 8:12 AM, Michael Wayne Goodman <span dir="ltr">&lt;<a href="mailto:goodmami@uw.edu" target="_blank">goodmami@uw.edu</a>&gt;</span> wrote:<br><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"><div dir="ltr"><div><div>Hi Developers,<br><br></div>Does anyone know why ${LOGONROOT}/dot.emacs redefines the &#39;unless&#39; and &#39;when&#39; macros? It breaks some other Emacs packages I have that depend on the return value of the &#39;unless&#39;, which should be the value of the last argument. I&#39;m aware that &#39;unless&#39; and &#39;when&#39; should be used when the return value is *not* important (according to <a href="https://www.emacswiki.org/emacs/WhenToUseIf" target="_blank">https://www.emacswiki.org/emac<wbr>s/WhenToUseIf</a>), but do we have to enforce that suggestion by redefining the macros so they don&#39;t return the last value?<br><br></div>Also see <a href="https://www.gnu.org/software/emacs/manual/html_node/elisp/Conditionals.html" target="_blank">https://www.gnu.org/software/e<wbr>macs/manual/html_node/elisp/Co<wbr>nditionals.html</a>, which says that &#39;unless&#39; is equivalent to:<br><br>    (if condition nil<br>       a b c)<br clear="all"></div></blockquote><div><br></div></span><div>Er... I meant that the guide says `(unless condition a b c)&#39; is equivalent to the above, not in the general case. And I think the expected return value of the &#39;unless&#39; expression would be c if condition returns nil.<br></div><span class="gmail-"><div> </div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"><div dir="ltr"><div><div><div>Thanks<span class="gmail-m_-4875101875560888905gmail-HOEnZb"><font color="#888888"><br></font></span></div><span class="gmail-m_-4875101875560888905gmail-HOEnZb"><font color="#888888"><div><br>-- <br><div class="gmail-m_-4875101875560888905gmail-m_-3669990881836768010gmail_signature"><div dir="ltr">Michael Wayne Goodman<div>Ph.D. Candidate, UW Linguistics</div></div></div>
</div></font></span></div></div></div>
</blockquote></span></div><span class="gmail-"><br><br clear="all"><br>-- <br><div class="gmail-m_-4875101875560888905gmail_signature"><div dir="ltr">Michael Wayne Goodman<div>Ph.D. Candidate, UW Linguistics</div></div></div>
</span></div></div>
</blockquote></div><br><br clear="all"><br>-- <br><div class="gmail_signature"><div dir="ltr">Michael Wayne Goodman<div>Ph.D. Candidate, UW Linguistics</div></div></div>
</div></div></div></div></div></div></div>