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

Re: Issue: TAIL-RECURSION-OPTIMIZATION (Version 2)



I think it might help to have the proposal say more explicitly what is
being proposed; it currently says "Permit early binding ..." which is a
very general statement. 

I think what we are saying is very narrow: if you (SETF (SYMBOL-FUNCTION
'FOO) ...) after you start executing the body of the definition of FOO and
before you execute a call of FOO to itself, it is unspecified whether you
get the old definition or the new one.

In general, most implementations are required to enforce late binding for
all functions not declared inline.

This might be analogous to having
(defun foo (x) ...) expand into
(setf (symbol-function 'foo) #'(lambda (x) (declare (inline foo)) (block
foo ...)))
i.e., is a function is implicitly declared inline within its own body?