Subject: Re: Why is Scheme not a Lisp?
From: Erik Naggum <>
Date: Fri, 15 Mar 2002 22:07:40 GMT
Newsgroups: comp.lang.lisp
Message-ID: <>

* 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.