Subject: Re: Tail recursion & CL From: Erik Naggum <firstname.lastname@example.org> Date: Thu, 11 Oct 2001 15:33:15 GMT Newsgroups: comp.lang.lisp Message-ID: <email@example.com> * 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?