[Python-ideas] Idea: Compressing the stack on the fly

Chris Angelico rosuav at gmail.com
Mon May 27 16:05:10 CEST 2013


On Mon, May 27, 2013 at 11:52 PM, Ned Batchelder <ned at nedbatchelder.com> wrote:
>
> On 5/27/2013 9:30 AM, Chris Angelico wrote:
>> What can tail recursion do that can't be done by reassigning to the
>> function parameters and 'goto' back to the top?
>
> That style can't handle mutually recursive procedures, or the extreme case:
> a state machine implemented with N functions, each of which calls the next
> state function at the end.  Tail-call elimination isn't simply about
> noticing recursive calls.  It's about noticing that a function ends with a
> function call, and not burning another stack frame in the process.

Ahh, gotcha. Of course. Mutual recursion would be a bit more of a
problem to the compressor, too, though; it'd have to recognize a
pattern that spans multiple stack frames.

ChrisA


More information about the Python-ideas mailing list