From: Stas B. <sta...@gm...> - 2013-10-13 17:19:17
|
Douglas Katzman <do...@go...> 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 > accept. > 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 infodb). So, it's a bug in SBCL, not CLHS. -- With best regards, Stas. |