Pascal Costanza <pc@...> writes:
>> On 13 Oct 2013, at 19:19, Stas Boukarev <stassats@...> wrote:
>> Douglas Katzman <dougk@...> writes:
>>> The as-always-non-authoritative CLHS says that the function-form to
>>> M-V-CALL is a "function designator", not an "extended function designator".
>>> So given this:
>>> * (defun (setf foo) (a b c) (format t "Hi ~S ~S ~S~%" a b c) a)
>>> * (defun bar () (multiple-value-call '(setf foo) (values 1 2) 3))
>>> on the 3 implementations I tried, CCL rejects that and CLISP and SBCL
>>> Would anyone care to opine whether that is a CCL bug, a non-CCL bug, an
>>> oversight in CLHS...?
>> CLHS is always authoritative (unless it's a clear typo/mistake), since
>> there's nothing else. And it makes sense to require this for efficiency
>> reasons, having to deal only with symbols means funcall can just access
>> symbol's function slot, which cannot be done with lists. (It's not
>> applicable to SBCL, since it currently stores such information in the
>> So, it's a bug in SBCL, not CLHS
> This is a very strict reading of the CLHS, which is not entirely
> justified. You could argue that cases like this fall under section 1.6
> of the HyperSpec...
SBCL shouldn't extend the language in such a way, thus making
non-conforming programs to be accepted by SBCL, but failing on other
implementations, especially when there's no intention to rely on such
behaviour, when the nonconforming form is used unknowingly or by
And it's not strict at all, the definition is of function designators is
quite clear and unambiguous.
With best regards, Stas.