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

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



>   Early binding of function names to function definitions is generally
>   inhibited in Common Lisp because CLtL says the compiler must assume
>   that any opaque function call might change the definition of a
>   function in between calls to that function.

Is there a specific place in CLtL that clearly says that, or is it
just inferred from the ability to SETF SYMBOL-FUNCTION without
restrictions on where or when?

> Proposal (TAIL-RECURSION-OPTIMIZATION:PERMIT-EARLY-BINDING):
> 
>   Permit early binding in some situations, but do not require them.

This doesn't define what "early binding" means.  The test cases suggest
what the intent is, but I'm not comfortable with specification by
example.  In particular, it isn't clear whether you intend to affect the
case of one function calling another, or if you are only talking about
functions that reference their own definition.

>   Specifically, with SPEED=0, the compiler should not do early binding
>   (for the sake of tracing, stack debugging, and reloading in
>   interactive debugging), ...

Given that intent, if proposal OPTIMIZE-DEBUG-INFO:NEW-QUALITY is
adopted, then a more appropriate criteria might be DEBUG>SPEED.
Actually, though, if debugability is the issue, this might be beyond
what the standard ought to specify, since nowhere else does it specify
what happens at particular optimization levels.

>     ... but with in other with higher speed settings, ...

The grammar didn't come out right on that.

>   regardless of the OPTMIZE SPEED setting.

OPTIMIZE

>   of the OPTMIZE SPEED setting.

ditto

> Current Practice:
> 
>   Symbolics Genera and Symbolics Cloe not currently do early binding.

"not" -> "do not"

>   David Gray has expressed reservations about this to the OPTIMIZE SPEED
>   quality at all since he sees it as a semantic issue.

... about tying this to the OPTIMIZE qualities ...
Actually, I thought _you_ were presenting it as a semantic issue.