Subject: Re: data hygiene [Re: Why is Scheme not a Lisp?]
From: Erik Naggum <>
Date: Sun, 17 Mar 2002 10:29:47 GMT
Newsgroups: comp.lang.lisp
Message-ID: <>

* Thomas Bushnell, BSG
| Huh?  There is far less "syntactic bloat" in Scheme macros, which
| involve two concepts (a binding concept and a
| what-is-a-syntax-transformation concept), in which it Just Works,
| reliably, always---compared to the several different levels of macro
| definition in CL, and the concomitant confusion often experienced.

  I do not think anyone disputes the usefulness of something that either
  Just Works or just does not apply, but Common Lisp is not about making it
  possible to do only the Right Thing.  I had to listen to one of the worst
  specimens of politician on the news last night in order to catch some
  real news, and it is clear that this Christian Democrat-like hypocrite
  really has as his concept of politics to create a whole nation where all
  people do the Right Thing according to his demented religious views.  I
  mean, it is the Taliban regime all over again, only with a mad Christian.
  Listening to this madman, I came to think of Scheme freaks.  In contrast
  to Common Lisp, which offers people a way to do whatever they want to do,
  Scheme offers a way to do whatever the Scheme designers want them to do,
  and if you want to do something else, the message is "You don't want to
  to do that."

  Confusion is the result of lack of knowledge, insight, and thinking, not
  a property of the subject matter.

| The really significant difference is not the hygene one, which CL could
| have without too much trouble.

  You know, you have spelled this "hygene" consistently for a while, so I
  think you may not know it is actually spelled "hygiene".

| The big difference is that CL thinks of macros as *functions* from forms
| to forms, and Scheme has a simpler pattern transformation method.

  So Common Lisp macros can implement Scheme macros, but not vice versa.

| The CL one allows for slightly more general macros; normally of course a
| CL macro is just a pattern transformation, but sometimes one wants to do
| more stuff, and the Scheme version doesn't permit that.

  That seems to be a case of "it Just Doesn't Work".

| (However, at present, there are two reasons Scheme lacks it; one is that
| the needed interactions between the hygene rules and the transformation
| functions are murky.

  I read this to mean "it is better left to human intelligence", and that
  is just what Common Lisp does.

  Oh, another thing Scheme says to people when it refuses to give people
  the freedom do what they think is best is: "You couldn't figure out the
  Right Thing on your own if you tried".  I can do without that attitude.

  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.