[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
funcall
Suppose we have the following code:
(defun mumble (a)
(flet ((mumble (a) (print "internal-mumble")))
(when (something a) (funcall 'mumble a))
(print "external-mumble")
Is it 100% legal to pass funcall a symbol? Most implementations I
have seen allow this although the manual tends to imply that the
thing being funcall'ed must be a "function". Notice that I am
carefully trying avoid what exactly is a function question which
others have raised recently.
Is a compiler justified in simply turning this into a call to mumble
as if it had been written as (mumble a) in the first place?
If so, which mumble should be apparent? If not, is a compiler justified
in turning the form into:
(funcall (symbol-function 'mumble) a) ?
Another related matter, suppose we change the funcall arg to
#'mumble --> (function mumble). Is it clearly the case then that
the mumble which is apparent is the inner one?
--David
p.s. Sorry if this question has been answered previously..