Subject: Re: MD5 in LISP and abstraction inversions From: Erik Naggum <erik@naggum.net> Date: Fri, 09 Nov 2001 10:38:59 GMT Newsgroups: comp.lang.lisp Message-ID: <3214291134727903@naggum.net> * Kent M Pitman -> Marc Spitzer | In what way would this be any different a question if asked about | functions and not macros? If a Common Lisp programmer insists on using C's standard library names for his string functions instead of the standard Common Lisp ones _and_ argues that those who use the standard functions are nuts, I think there would probably be the same kind of uniform rejection of this stupidity as what appears to be building towards the limited IF* crowd, not primarily because of the specific idiotic new "feature" that nobody needs or wants, but because of the sheer irrationality of the whole endeavor and because of the incredible _arrogance_ exuded by those who thus reject the whole community they _pretend_ or may even helplessly _want_ to be members of, but are in fact rejecting completely. It is that initial rejection of the community, the pretentious arrogance of one who thinks he knows so much better than everybody else, and the holier-than-thou attitude when criticized that comes from both of the former attitude problems, that _really_ ticks people off. It is no longer about some stupid invention of a macro or a function or a new sub-language, it is about the lack of willingness to yield in traffic as opposed to a willingness to run into people on purpose because one thinks one is a superior to others -- it is the _exact_ same process that makes people become criminals. It is actually a good thing to have lots of people argue vociferiously for and defend a community standard because it shows that the community comes before the person, but it is a really _bad_ thing to have someone argue vociferiously _against_ community standards, especially when the only reason for doing so is that those very few who argue against it subjugate community interests to their own ego, even more so when it has become badly bruised in a battle over its anti-community tactics. At issue is not the specific new "features", whether they be macros, functions, or anything else, it is simply a rejection of someone who has decided to be an outlaw and force his own way regardless of consequences instead of trying to work within the law to make people agree with him how to make a better world -- probably because he realizes that it would in fact not _be_ a better world if he did not rule everything in it. I have long had an interest in law and the philosophy of law, but with it comes an interest in why people choose to abide by or violate a law, or even ethics. Everybody has their own ethical standards which come into conflict with the law or at least other people's ethics at various points in their lives. The really _big_ question is whether you are the kind of person who realizes that the only thing the law and ethics _really_ say is what is _wrong_ or you are the the kind of person who (mistakenly) believes that law and ethics tell people what is _right_. The latter go on to be quite the intolerable moralists who want people to follow a specific path (i.e., whatever path they have chosen, and the two usually become conflated) or else they are doomed sinners upon which all evil can be hurled in a "defensive" action. The former find it interesting how people choose among a very large number of ways to go about their lives, but may also be intolerant of those who, by breaking law and ethics and taking both in their own hands, make it harder or impossible for others also to choose their own ways. It is threfore quite illuminating how our perpetrator continues to argue that he is within the law and community ethics when he does something he can have no doubts at all the community has resoundingly _rejected_. The lack of willingness to stop doing, indeed, the insistence on _continuing_ what the community has disapproved of is precisely what defines the criminal mind. Law and ethics are wisely set up by lots of smart people working very slowly to ensure that proper procedure is followed, resulting in both being _vastly_ smarter than the average joe, in order to ensure that _very_ different people can live together under the same rules without needing special privileges for particular groups, which was the general situation before these intricate procedures were followed. "Equality before the law" is definitely not in the _personal_ interest of most people, who would rather get a break than be held responsible for their actions. (Punishment also does not work on those who do not understand what happened to them, only the threat of punishment does, although it can take an initial actual punishment for some people to "get it", but without real punishment, there is no threat, so this is a very hard problem to resolve.) What defines a community is in part its process of agreeing on its laws and ethics and other standards. We have a language standard that should have united us. Because of some lunatics who value being rebels higher than a working community, this is not quite so, and we still have to fight battles over what the community standards-setting procedures are. In essence, it will be fought over whether some nutcase can publish a "Coding Standard" document where he ridicules and undermines the standard that the community has in fact agreed upon and which thus rejects the community _and_ get away with it through stubbornness and sheer tenacity, or whether the community rejects this nutcase and moves on, despite the everpresent lack of _total_ agreement with any community standard. Some people will always disagree with some part of what has been agreed upon for a large population, and there are many reasons for this, but the real question is not what people disagree with, not with what they do when they disagree, not with how they plan to "convert" people to their ways, but with whether they wish to maintain a respect for that community standard or seek to destroy that respect and thus obliterate what holds the community together. This is not about some language feature or another, which, typically and predictably, the perpetrator will continue to whine that it is. This is about how we wish to hold a community together. There is no doubt that this insipid if* macro stunt is fragmenting the community like nothing else, despite the perpetrator's propagandistic lies about loop, which is the object of another of his destructive machinations. The _only_ issue is whether the perpetrator can manage to stop fragmenting the community when he realizes that that is precisely what it does. So far, all we have seen is an _increasing_ arrogance and even more stubbornness in his fight against the community. Clearly, this nutcase/perpetrator values his protest _much_ higher than that which he knows that he is destroying in the process. That kind of destructive attitude cannot be tolerated. If the nutcase/perpetrator had been willing to back down early, this would never have gotten to be such an issue. It has become an issue only because he does _not_ back down. Now he cannot back down because he would lose his personal prestige doing so, wrecking his "standing" among whoever still supports him. This is pretty pathetic, but that is how things evolve when you are _wrong_ and are prevented from realizing it in time for personal and highly irrational reasons. We must expect the perpetrator to protest his innocence too much and continue to pester the Common Lisp community with his bogus claims about the standard and how the language and the community should welcome his stupid stunt. Finally, if* has already become a symbol for the clueless rebels, but the likelihood that whoever initially thinks that stupid macro is a good idea will stick to it as they see what they are buying into by using this symbol of anti-standard, anti-community, childish rebellion against authority, will also decrease, hopefully further isolating the rebels. I have used an Emacs Lisp function to transform if* into an if, cond, when, or unless form as deemed appropriate through some simple measures, but it needs tweaking to make it work better. It reverts the form to the bogus if* form when saving the file, unless it has been modified so as not to affect patches and other updates to the code from people who have yet to rid the code of the bogosity. It should probably also realize when the if* nonsense is really trying to macroexpand a case, typecase or any of the other numerous much better ways of expressing things than an overly verbose and poorly formatted list of elseifs. /// -- Norway is now run by a priest from the fundamentalist Christian People's Party, the fifth largest party representing one eighth of the electorate. -- Carrying a Swiss Army pocket knife in Oslo, Norway, is a criminal offense.