Subject: Re: Tail recursion & CL
From: Erik Naggum <erik@naggum.net>
Date: Thu, 11 Oct 2001 15:33:15 GMT
Newsgroups: comp.lang.lisp
Message-ID: <3211803188592640@naggum.net>

* Thomas F. Burdick
| That's not much of an argument against the analogy.

  That someone can imagine something does not make it an analogy worth
  arguing against.  It is incumbent on the analogy-producer to cough up
  something worth considering.  Lacking that, _you_ have no argument, and
  it is counterproductive and _indecent_ to pretend that someone who
  rejects your analogy is at fault for doing so, and I do not generally
  reward silliness.

| Yes.  In other words: "I want this tail call merged; tell me if you
| cannot do that".

  So we can get that today by defining something that always yields a
  warning or even error that it cannot tail-merge the call.  That seems
  like _such_ a great thing to add to the standard!  The moment you go
  beyond this silliness, however, you run into problems.  I second Tim
  Bradshaw's request that you (or that formal theory dude) actually come
  up with something that can be subjected to careful scrutiny.  As long as
  you only "want" something and make up silly imaginary analogies, there
  is absolutely no reason to believe that you _understand_ what you want.

| If a requested tail-call merge can't be performed, raise a condition.

  At compile-time?  Should the interpreter raise a condition, too?

| You're right.  The entire CL standard is worthless.

  Please turn your brain back on.

| Not only should we not think about what we'd like in a future standard,
| we should throw the whole thing we have now, out.  Because, after all,
| how to we enforce it?

  If you fail to appreciate that standards are specifications and tha
  clauses in standards are requirements, I can certainly fully understand
  why you "want" useless tail-call merging-requesting special forms and
  have no idea what you are embarking on.

  Some astonishingly unintelligent politicians always suggest "good ideas"
  that cannot be enforced, in the fantastically irrational belief that
  people will sort of follow the spirit of the law when nothing bad happens
  to those who do not, and the actually believe that a law is the proper
  place to make feeble suggestions about people's "good behavior".  Every
  now and then, this feeble-minded moralism passing for law-making is not
  obvious to sufficiently many politicians in time to avoid embarrassing
  laws to pass.  If you do not understand that if you write it into law,
  there _will_ be a court of law facing those who disobey it and you _will_
  impose punishment on those who "disagree" with you, you should not be
  messing with laws in the first place.  The same goes for standards,
  although we have weaker means of dealing with the criminally-minded (i.e,
  those who believe themselves elevated far above the community consensus
  and not at all bound by its decisions) in our community than in the legal
  and law enforcement community.  However, do not expect that those who
  profess a criminal mind's arrogance towards community consensus to be
  treated nicely.  When you are in fact trying to change the community
  consensus through a change to a specification that requires and survives
  _only_ because it has the respect of law-abiding citizens, the people who
  will most likely be affected by an undesirable change are those who want
  to fuel their arrogance towards the specification.  You have to recognize
  that some people in our community already harbor _massively_ irrational
  arrogance towards the standard and go out of their way to publish code
  that actively diminishes the value of adhering to the standard where the
  standard has spoken.  These are people who are so hell-bent on their own
  views that _they_ know better than the whole community consensus, that it
  has no merit whatsoever to respect those who desire a community consensus
  over some personal likes and dislikes.  Search for "religious zealot" in
  the archives of this newsgroup if you need to find a person who has shown
  us that opening up the standard to changes will be _very_ dangerous and
  that it should not be done for irrelevant and petty changes like getting
  a silly form to get an error if you cannot get tail-call merging.

  Those of us who want tail-call merging already _have_ the guarantees we
  need because we have read the fine _documentation_ of our Common Lisp
  environments and recognize that this will _have_ to be an implementation-
  dependent quality.  It has absolutely nothing to do with the semantics of
  the code, misguided formal theories to the contrary notwithstanding, and
  there is absolutely nothing in the language _today_ to suggest that you
  _can_ guarantee this feature, any more than you can "add" it to other
  languages that have not had the forethought to decide on "properly tail-
  recursive" _early_ in the design process.

  Let me make an analogy.  It is sometimes possible to turn a regular
  double-action pistol into an automatic pistol by breaking parts inside.
  Now, automatic firing of up to 19 rounds from a handgun can be a really
  good thing in approximately one situation, and we have wisely chosen not
  to include that situation in _lawful_ shooting activities, but some are
  not bound by the law so they want this feature.  With the kind of guns
  that you can achieve this feature, it is hard enough to hit the target in
  its normal single-shot mode and the temperature of the gun rises so fast
  that you normally want to restrict your firing to five rounds at a time.
  The effect of automatic firing in this hand-gun is thus to cause the
  muzzle to rise with every shot, usually by a significiant angle, and to
  raise the temperature of the barrel and thus _decrease_ its diameter, not
  to mention the angle and temperature of the ejected cartridge.  The
  hazardous nature of the modification should be fairly obvious even to
  people who think guns are only used to kill people.  Still, there are
  automatic pistols on the market that are _designed_ with this feature and
  they are quite safe, at least for the guy pulling the trigger.  I have no
  desire to own such a gun at all -- I shoot because it is a sport
  requiring strength, concentration, body control, etc, not because I like
  the actually _annoying_ sound effects, so when somebody who wants such
  guns looks at my guns and argue for the merits of automatic firing, I do
  think they are genuinely interested in automatic pistols, I think they
  are fucking nuts and would feel a lot safer if they left the range.  This
  is approximately how I feel about Scheme freaks in the Common Lisp world.

///
-- 
  My hero, George W. Bush, has taught me how to deal with people.  "Make no
  mistake", he has said about 2500 times in the past three weeks, and those
  who make mistakes now feel his infinite wrath, or was that enduring care?