Python's "only one way to do it" philosophy isn't good?
Steven D'Aprano
steve at REMOVE.THIS.cybersource.com.au
Sun Jun 10 23:22:28 EDT 2007
On Mon, 11 Jun 2007 01:28:09 +0100, Alexander Schmolck wrote:
> Steven D'Aprano <steve at REMOVE.THIS.cybersource.com.au> writes:
>
>> On Sat, 09 Jun 2007 22:42:17 +0100, Alexander Schmolck wrote:
>>
>>>> As for why tail calls are not optimized out, it was decided that being able
>>>> to have the stack traces (with variable information, etc.) was more useful
>>>> than offering tail call optimization
>>>
>>> I don't buy this.
>>
>> Do you mean you don't believe the decision was made, or you don't agree
>> with the decision?
>
> Neither. I don't believe the rationale stated in this thread to be the true
> reason.
Don't keep us in suspense. What do you believe is the true reason?
>> Are you volunteering? If you are, I'm sure your suggestion will be welcomed
>> gratefully.
>
> I rather doubt it. Guido has stated quite clearly that his not
> interested in incorporating this feature.
He's not the only one who gets to make these decisions. But even if he
uses his veto to prevent tail-recursion optimization from being put into
the main branch, there are other options.
>>>> (do what I say).
>>>
>>> Where did you say run out of memory and fail? More importantly how do
>>> you say "don't run out of memory and fail"?
>>
>> If we can live with a certain amount of "arbitrary failures" in simple
>> arithmetic,
>
> I prefer not too, and thus when possible avoid to use languages where
> ``a + b`` is liable to fail arbitrarily (such as C, where the behavior
> will often be undefined).
That's not the sort of arbitrary failure I was discussing, but for that
matter Python is one of those languages. Perhaps Python is not the
language for you?
Correct me if I'm wrong, but surely it is C++ that can have arbitrary
behaviour for "a + b", not C?
>> then the world won't end if tail recursion isn't optimized away by the
>> compiler.
>
> I'd personally much rather have arithmetic working properly.
> Unfortunately this is not an option at the moment, although quite a few
> smart people are working on it and although it is an immensely costly
> problem.
>
>> You can always hand-optimize it yourself.
>
> Not tail calls, in general, no.
Sorry, how does that work? You're suggesting that there is an algorithm
which the compiler could follow to optimize away tail-recursion, but human
beings can't follow the same algorithm?
Now I'm confused.
--
Steven.
More information about the Python-list
mailing list