Jeff Clites <[EMAIL PROTECTED]> wrote: > But there's one wiggle: If you've created a continuation previously > (and it still exists), then any call has to preserve the frame
Well, that's what continuations are doing. They do preserve the frame, which they have taken a snapshot of. And they preserve any frames up the call chain. This is needed and implemented and working. The concept of a return continuation (which recycles itself and the frame it returned from) doesn't have an influence on tail calls. Whenever you see a continuation "on the surface", it's one that is preserving the frames and the context. Eventually there isn't even a RetContinuation object but just a pointer to the calling frame. But whenever you can see a continuations it's a real one - at least then, when the big cheese doesn't see this change (returncc opcode) as a change to calling conventions anymore "not now" ;) So a tailcall can even silently reuse the return continuation and return to the caller's caller. AFAIK the only problem with tailcalls and tail-recursive functions is to prperly detect them in some optimizer, or to convert to such tailcalls. > JEff leo