[Python-Dev] Proper tail recursion (original) (raw)

Michael Hudson mwh at python.net
Thu Jul 15 11:19:04 CEST 2004


Christopher T King <squirrel at WPI.EDU> writes:

On Wed, 14 Jul 2004, Michael Hudson wrote:

I guess I could have said this in c.l.py, but: what's the point? I don't think I've ever had a situation where hitting the recursion limit wasn't a bug, and given a) the ease with which a non-contrivedly tail recursive algorithm can usually be rewritten iteratively and b) the (lack of) speed of function calls in today's Python I can't see any huge real advantage to this patch. To tell the truth, I don't really have any immediate use for this functionality, either, but since it turned out to be so easy to implement, I ask, "why not?" ;) Presuming it doesn't break any existing functionality, of course.* I prefer to think of it in the same light as the opcode prediction macros, i.e. as a performance enhancement, rather than as an attempt to introduce a new paradigm to the language (which it isn't).

Is it actually a performance enhancement?

* I know it breaks stack traces, but the final implementation will only be used when the -O flag is specified, or some other such indicator is set.

It doesn't seem to me that it necessarily has to break tracebacks... Haven't looked at the patch, though. I guess there's a fair chance that any performance enhancements it acheives are from resuing frame objects (if that's what it does) though.

Cheers, mwh

-- I've even been known to get Marmite near my mouth -- but never actually in it yet. Vegamite is right out. UnicodeError: ASCII unpalatable error: vegamite found, ham expected -- Tim Peters, comp.lang.python



More information about the Python-Dev mailing list