[developers] dot.emacs redefinition of 'unless' and 'when'

Michael Wayne Goodman goodmami at uw.edu
Tue Dec 19 22:49:58 CET 2017


Sorry, one more change to my original mail. I mistakenly assumed that
'unless' was not returning the last value when the condition was false
(based on some symptoms I was seeing), but I didn'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's non-nil, rather
than returning nil.

; standard unless
(unless nil 1 2 3)  ; returns: 3
(unless 'value 1 2 3)  ; returns: nil

; LOGON unless
(unless nil 1 2 3)  ; returns: 3
(unless 'value 1 2 3)  ; returns: value

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.


On Tue, Dec 19, 2017 at 10:18 AM, Michael Wayne Goodman <goodmami at uw.edu>
wrote:

> On Tue, Dec 19, 2017 at 8:12 AM, Michael Wayne Goodman <goodmami at uw.edu>
> wrote:
>
>> Hi Developers,
>>
>> Does anyone know why ${LOGONROOT}/dot.emacs redefines the 'unless' and
>> 'when' macros? It breaks some other Emacs packages I have that depend on
>> the return value of the 'unless', which should be the value of the last
>> argument. I'm aware that 'unless' and 'when' should be used when the return
>> value is *not* important (according to https://www.emacswiki.org/emac
>> s/WhenToUseIf), but do we have to enforce that suggestion by redefining
>> the macros so they don't return the last value?
>>
>> Also see https://www.gnu.org/software/emacs/manual/html_node/elisp/Co
>> nditionals.html, which says that 'unless' is equivalent to:
>>
>>     (if condition nil
>>        a b c)
>>
>
> Er... I meant that the guide says `(unless condition a b c)' is equivalent
> to the above, not in the general case. And I think the expected return
> value of the 'unless' expression would be c if condition returns nil.
>
>
>> Thanks
>>
>> --
>> Michael Wayne Goodman
>> Ph.D. Candidate, UW Linguistics
>>
>
>
>
> --
> Michael Wayne Goodman
> Ph.D. Candidate, UW Linguistics
>



-- 
Michael Wayne Goodman
Ph.D. Candidate, UW Linguistics
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.delph-in.net/archives/developers/attachments/20171219/5f630606/attachment-0001.html>


More information about the developers mailing list