[plt-scheme] guido on tail recursion

From: Shriram Krishnamurthi (sk at cs.brown.edu)
Date: Sat Apr 25 19:25:38 EDT 2009

True, but:

1. It's the term we've got.

2. It's different from "tail recursion".

3. These calls, like all other calls, do return.  Just in a slightly funny way.

To use "tail recursion" because "tail call" isn't perfect is like
cutting off the nose to spite the face.


On Sat, Apr 25, 2009 at 2:49 PM, Joe Marshall <jmarshall at alum.mit.edu> wrote:
> The word `call' itself is problematic because it implies a return.
> On Sat, Apr 25, 2009 at 11:42 AM, Shriram Krishnamurthi <sk at cs.brown.edu> wrote:
>> It is dangerous to use the term "tail recursion" ever, unless you
>> really, really mean recursion in the very narrow sense by which the
>> doofus-in-the-street understands it, namely "a function that
>> *directly* calls itself".
>> I have seen an especially strong trend amongst MIT folks to use "tail
>> recursion" to refer to the general case of "a sequence of calls that
>> eventually result back in the same function, even if indirectly".
>> This is technically correct, and the meaning of this general phrase
>> may be obvious to all members of the very highly intelligent species
>> that populates MIT.  But it confuses the doofus, and that's a problem,
>> because it leads to the sort of confusion in Guido's message and
>> ensuing discussion -- on a topic that needs less, not more, confusion.
>> [Tail calls that do not lead to recursion are still worth optimizing,
>> but they cannot lead to order-of-complexity increases in size except
>> in pathological cases, so they are not as interesting to focus on
>> because that, too, distracts the conversation.]
>> Shriram
> --
> ~jrm

Posted on the users mailing list.