Promoting Python

Chris Angelico rosuav at gmail.com
Wed Apr 6 15:00:44 EDT 2016


On Thu, Apr 7, 2016 at 4:44 AM, Random832 <random832 at fastmail.com> wrote:
> On Wed, Apr 6, 2016, at 14:23, Marko Rauhamaa wrote:
>> Chris Angelico <rosuav at gmail.com>:
>>
>> > Plus, anyone could implement a Python interpreter with TCE.
>>
>> Tricky in practice because None is the default return value.
>>
>> If the programmer were careful to return the value of the tail call, it
>> can be eliminated.
>
> Well, the interpreter can know that the calling function doesn't return
> anything (returns None). Maybe it could pass a secret argument to the
> called function telling it not to return its value and to return None
> instead.

This is the exact sort of shenanigans that it takes to convert
recursion into tail recursion - and in MOST cases, it's very little
effort to go from there to explicit while loops. That's why TCE is so
infrequently important that it's just not worth the cost - which in
this case is damage to tracebacks.

ChrisA



More information about the Python-list mailing list