Subject: Re: Why is Scheme not a Lisp? From: Erik Naggum <erik@naggum.net> Date: Fri, 15 Mar 2002 22:07:40 GMT Newsgroups: comp.lang.lisp Message-ID: <3225218871675295@naggum.net> * Kent M Pitman > Hygenic macros solve a problem that CL does not have. (They solve a > problem introduced by Lisp1-ness. Heh.) I see no need for these > whatsoever. * Bruce Lewis | You never need to use gensym when writing CL macros? Please realize the difference between a requirement and a choice. | Non-hygienic macros are definitely useful, but this bashing of hygienic | macros doesn't seem right. It would not have been right in comp.lang.scheme. You are not in comp.lang.scheme. Over here, the obsessived-compulsive drive for "hygiene" is basically the object of some ridicule. People who scrub (like doctors) before they eat, after they have been in touch with potentially disease-carrying materials (bonus points for overstating the potential), and, say, before touching anything valuable, like a book or a keyboard, may find like-minded people who consider this proper behavior, but they should also prepare themselves to have their views rejected by other people in sometimes hostile and sometimes derogatory ways. If you want some of the worst design decisions in Scheme to be protected from ridicule, choose comp.lang.scheme. If you consider the derogatory implication of calling Scheme macros "hygienic" (which is just as snotty as we expect from the Scheme community), some ridicule back at a language that needs them because it dirties _itself_ should be par for the course. It is not Common Lisp that dirties itself and "lacks hygiene", it is what Scheme would do. However, it is fairly obvious that the choice of the word "hygiene" is intended to communicate a superiority and instead of calling Common Lisp macros just "macros", they become "non-hygienic". What the hell is _that_? Scheme freaks who hijack the premise for a discussion like that are bad people in my book. Duane Rettig made a similar point about "proper tail recusion", which I chuckled when reading, because I had been taken in by the "improper" tail recursion that would be found in every other language. Scheme is chock full of snotty terminology like that and it is, frankly, really, really annoying. I have read some of the most ludicrous nonsense about Common Lisp macros in comp.lang.scheme, where the common perception seemed to be that Common Lisp dirties itself _exactly_ the same way Scheme does, and it seems that Scheme freaks generally tend to think Common Lisp is nothing more than a variant of Scheme, that all the choices made by Scheme are also made by Common Lisp, except the ones that Common Lisp "missed" and that Common Lisp therefore sucks. However, this is the problem with Scheme freaks when they wander outside their little playpen -- they do not _know_ that their terminology is Scheme-specific, they do not _know_ that they have made a huge number of design decisions that are different from other members of the Lisp family, and yet they have the _gall_ to parade their arrogant ignorance outside their chosen forum, huffing and puffing like some mighty little dragon. _This_ is what has caused me to regard Scheme as an inferior language with inferior people in its community for so long, since no sane person would have to engage in such tactics to feel good about themselves and what they do. "Look, I'm hygienic and you're not, and I'm proper and you're not" is not particularly mature rhetoric, but it _is_ a pretty good marketing strategy for something that is in need of such rhetoric. But then the Scheme freaks want to pretend that what they do is _technical_ and _not_ political. That is when the sheer dishonesty becomes a little too much to bear for non-fans of Scheme. /// -- In a fight against something, the fight has value, victory has none. In a fight for something, the fight is a loss, victory merely relief.