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

tail-recursion



   Date: 26 Apr 90  1355 PDT
   From: Dick Gabriel <RPG@sail.stanford.edu>

   I could persuade [compiler people] more effectively if I could point to a
   larger programmer community, which I could do if I could get some variety
   of Scheme into the mainstream, which I could do if I could only get the
   definers of the language to allow a mainstream implementation to be
   called a Scheme.

   Someone conjectured that if we `cave in' on tail call removal, we will
   never get these outsiders to adopt it, because, hey, they won their
   argument. Well, I cannot think of gentle enough words to use to educate
   this someone that the real world of negotiation is not like a trivial war
   board game.

My reasoning was not that simplistic.  For one thing, I did not think
that a Scheme without tail call removal would have even minimal
acceptance in the Scheme community.  Subsequent comments to this list
suggest that while there are purists who would not use such a Scheme,
there are also plenty of people who would.  So I stand corrected.
However, (see next paragraph)

	       Once agreements are made in such a way that you can establish
   technical collegiality, additional compromises can be made which will
   enable complete implementations.

I am skeptical of this, on technical grounds.  I don't see why it should
be any easier to add tail call removal to a fully developed back end
than it would be, for instance, to remove dependence on it from the
Lucid CL implementation.  We are all familiar with the phenomenon that
certain properties of a software system have to be designed in at the
beginning of its development; they cannot, in practice, be added later.
Tail call removal certainly seems to me to be a likely candidate for
such a property.  If you think otherwise, I am certainly interested to
hear why.

		     The members of the CL community are returing from the
   forest with the arrows of commercial battle in their backs; possibly we
   should try to learn what happened to them so as to not make the same
   mistakes?

Or possibly we should let them fight our battles for us, since they seem
to be in the position of having to do so anyway:

   Oh, by the way, I convinced that compiler backend group to put in tail
   call removal. I did it by pointing out that the CL my company supplies to
   them will need to use their backends in 1992, and that for my
   implementation to work well, tail call removal needs to be supported by
   the compiler. One down, 10 to go.

That's a better argument than any having to do with Scheme.  I guess we
can't help your campaign much after all.  Good luck, though!

Seriously -- my sense of the matter turns on the fact that you are
making this effort anyway.  If you weren't, and there were just no
chance of our influencing the compiler folks -- which you argue quite
convincingly there wouldn't be -- then I would be much more inclined to
go the compromise route.  But as long as you are making nonzero
progress, Kimosabe, I would prefer we sit tight and await the outcome.

-- Scott