On Thursday 23 April 2009 21:18:50 John Cowan wrote:
> On Thu, Apr 23, 2009 at 12:52 PM, Jon Harrop <[email protected]> wrote:
> > > http://neopythonic.blogspot.com/2009/04/tail-recursion-elimination.html
> >
> > Not worth reading. Guido has absolutely no idea what he is talking about
> > and is probably the last person on Earth you should listen to in this
> > context.
>
> I profoundly disagree.
>
> His points labeled "First" and "Second" are true:

His entire post is supposed to be explaining why "Tail Recursion Elimination" 
should not be implemented in Python and, in that context, his points are all 
entirely invalid. Moreover, the broken terminology makes it clear that he has 
no idea what he is talking about.

> TCO does destroy stack trace information,

So make it optional.

> and people would (and should) come to depend on TCO if it was available.

That is true of any useful feature.

> His point labeled "Third" is a matter of opinion.

His third point is that he believes that arrays are more "useful" than 
recursion. That is irrelevant nonsense.

> His point labeled "Last" (which is not the last) is solely about tail
> *recursion*, rather than about tail calls in general,

His entire post is only about recursion. Indeed, he does not appear to even 
know what a tail call is and makes no mention of anything that tail calls 
facilitate.

> and correctly 
> makes the point that in Python you cannot tell when you are dealing
> with the former rather than the latter, because the meaning of a name
> (including the name of the currently executing function) can change
> dynamically.

That is one of the really serious problems with Python but it is irrelevant 
here.

> His points labeled "Still" discusses possible approaches for detecting
> increasingly more "advanced" versions of tail calls, quite soundly.

Utter nonsense. There is no such thing as an "advanced" tail call. This 
confusion only arose because Guido has absolutely no idea what he is talking 
about.

In reality, tail calls are easy to define and easy to identify. There is no 
merit in pretending otherwise.

> His final point (unnamed) correctly remarks that Python and C are
> generally intertwingled, and that since C does not have TCO, even a
> full Python implementation of TCO can still blow out the stack due to
> Python-C-Python-C recursion.

The same is true of F# and C# but it has never caused me a problem. The reason 
is, of course, that Guido's argument has no basis in reality whatsoever 
because he has no practical experience of this at all and has absolutely no 
idea what he is talking about. He is just fear mongering.

You would get an equally accurate technical discussion in an asylum. Reading 
Guido's blog post was a complete waste of time.

-- 
Dr Jon Harrop, Flying Frog Consultancy Ltd.
http://www.ffconsultancy.com/?e

--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google Groups "JVM 
Languages" group.
To post to this group, send email to [email protected]
To unsubscribe from this group, send email to 
[email protected]
For more options, visit this group at 
http://groups.google.com/group/jvm-languages?hl=en
-~----------~----~----~----~------~----~------~--~---

Reply via email to