Subject: Re: Tail recursion & CL
From: Erik Naggum <erik@naggum.net>
Date: Thu, 25 Oct 2001 14:31:04 GMT
Newsgroups: comp.lang.lisp
Message-ID: <3213009062053491@naggum.net>

* Kent M Pitman
| Yes it does.  

* jrm@itasoftware.com
| At the risk of sounding like John Cleese, ``No, it doesn't.''

  I think Kent means "there is a case when it does" and that you mean
  "there is a case when it doesn't".  The former is far more interesting
  than the latter, because the former has far more implications that the
  latter.  That some problem vanish when block does not allocate is quite
  unimportant if those problems do not vanish if block does allocate.

  That it is possible to implement something a particular way that will
  remove a particular set of problems, does not mean that that particular
  way is usable within the framework that needs to cater to more than just
  this particular problem.

  This line of argument is the core of my objection to _requiring_ Common
  Lisp systems to do tail-call merging, because I can foresee several
  negative consequences of this requirement for several implementations
  that will impact other useful things that I want much more than I want
  tail-call merging.  Other people have other priorities, but since there
  conflicts, and people can actually make do with _implementations_ that
  offer something they want (except for Juliusz Chroboczek, who does not
  want to use it, anyway), and since changing the language to force
  everybody to do tail-call merging carries a cost in terms of what other
  things become easier and harder to do -- such as an attendant reluctance
  to do things that make tail-call merging impossible -- the status quo is
  _politically_ satisfactory: Making changes will be _unsatisfactory_.

///
-- 
  Norway is now run by a priest from the fundamentalist Christian People's
  Party, the fifth largest party representing one eighth of the electorate.
-- 
  The purpose of computing is insight, not numbers.   -- Richard Hamming