[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: tail call proposal [was: Re: tail recursion proposal]



|   From: Kent Pitman <kmp@harlequin.com>
|   Date: Thu, 8 Jan 98 23:48:49 EST
|   Subject: tail call proposal [was: Re: tail recursion proposal]
|   
|   This is the "heuristic" technology that "usually" works.  [I might also in
|   another forum debate its naturalness, but let's not do that here.
|   Hopefully, my concern over its naturalness is an existence proof that
|   controversy exists.]

There is also a "Flat Earth Society".  You'll have to do better for me
to take your concern more seriously :-)

Now more seriously, I don't know what your naturalness argument is, so
I'll take a guess.  Why are stacks natural?  Perhaps because they were
taught in the Algol-60-influenced early 70s?
   
|   Heh.  I actually thought about this.  But you know, the tail elimination
|   requirement makes it not conforming if it uses a non-constant amount of
|   space.  In effect, this is expressly prohibited.  :-) [And anyway, adding
|   more storage does nothing to the "naturalness" problem.]

I will grant you that it is heuristic, but the limit can be quite
large, and no smaller than most stacks that implementations typically
have.

In addition, it also allows you to view the state of previous
iterations of a loop even if you espressed it with a looping
construct.

It's funny to me that you argue that the Scheme position is bad
because we lose debugging information due to the tail call
optimization.

I could equally well argue that the traditional position is bad
because you lose information about earlier iterations of a loop.

You might say that everyone expects to find a stack but no one expects
to find a history of previous iterations, but someone who grew up with
MIT Scheme (if any such exist) would find that expectation no
different than your expectation of having a call stack for debugging.

It all comes down to what you are used to and what you are not.