emacs-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: setq's with missing final arguments.


From: David Kastrup
Subject: Re: setq's with missing final arguments.
Date: Sun, 22 Nov 2015 14:08:22 +0100
User-agent: Gnus/5.13 (Gnus v5.13) Emacs/25.0.50 (gnu/linux)

Andreas Schwab <address@hidden> writes:

> Alan Mackenzie <address@hidden> writes:
>
>> Hello, Emacs.
>>
>> Consider this file:
>>
>> ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
>> (defvar foo t)
>> (defvar bar t)
>>
>> (defun bad-setq ()
>>   "Doc string"
>>   (setq foo 5
>>      bar))
>> ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
>>
>> In the setq, there is a missing argument after "bar".  At the moment,
>> the byte compiler just generates code to assign nil to bar, without
>> giving any warning.  IMAO, this is Very Bad.
>
> But consistent with how setq works.

How so?

    setq is a special form in ‘C source code’.

    (setq [SYM VAL]...)

    Set each SYM to the value of its VAL.
    The symbols SYM are variables; they are literal (not evaluated).
    The values VAL are expressions; they are evaluated.
    Thus, (setq x (1+ y)) sets ‘x’ to the value of ‘(1+ y)’.
    The second VAL is not computed until after the first SYM is set, and so on;
    each VAL can use the new value of variables set earlier in the ‘setq’.
    The return value of the ‘setq’ form is the value of the last VAL.

    [back]

There is nothing in here whatsoever that would suggest an odd number of
arguments is allowed or does anything useful.

-- 
David Kastrup



reply via email to

[Prev in Thread] Current Thread [Next in Thread]