Subject: Re: data hygiene [Re: Why is Scheme not a Lisp?]
From: Erik Naggum <>
Date: Sat, 16 Mar 2002 04:05:13 GMT
Newsgroups: comp.lang.lisp
Message-ID: <>

* Thomas Bushnell, BSG
| Data-hygene would be important if symbols in Scheme had all the features
| that they do in Common Lisp.

  I think you trivialize a very good article to the point of unspeakable
  rudeness.  Try to understand the point that Scheme is actually lacking an
  important feature, and that it just lost a serious claim to "Lispness" by
  virtue of a design decision that goes all the way back to Algol, and not
  at all to Lisp.

  Perhaps it can be said as imply as this:  In the Algol family, the symbol
  table is a compiler construction.  In the Lisp family, the symbol table
  is a run-time resource.  In this sense, Scheme is a member of the Algol
  family and not a member of the Lisp family.

  The problem is not that data-hygiene would be important, it is that
  data-hygiene _is_ important and Scheme does not support it, while it
  makes a terrible stink about program-hygiene.  Where does all this "code
  is data" propaganda go when you so strongly favor one at the expense of
  the other?  It suddenly sounds hollow for Scheme.

| That is, from the Scheme perspective, we're dealing with global variables
| here, and We Don't Like Global Variables.  Or at least, that's the point.

  What a silly position to take.

| Now you argue that this has made the macro system in Scheme "very
| complex", but I think that's looking at the wrong side of the problem.

  wrong = non-Scheme.  How typical!  How unwilling to understand and think.

| Scheme macros, from the user's perspective, are as simple as can be: they
| reliably Just Work.  Everytime I worry (oh, will this shadow something
| wrongs) and I bother figuring it out, I realize, "nope, the rules nicely
| make sure the Right Thing will happen".

  A person who always agrees with those in power is free in any political
  system, even a dictatorship.  Common Lisp tries to accomodate people who
  do not always agree on everything, only on a small set of things that
  enable people to be free even when they disagree violently about other
  things.  Scheme freaks tend to regard my desire to keep comp.lang.lisp a
  place where we agree on a small number of things that enable a large
  degree of freedom, as the kind of dictatorship _they_ live in, where so
  much is dictated to be The Right Thing that only those who agree with all
  of it are free.  But Common Lisp is a different political animal -- it is
  a working political compromise formed in order to get something done and
  to enable people to do unexpectedly complex and interesting things --
  such as Artificial Intelligence.  Scheme is about doing One Right Thing,
  whatever that might be -- I do not care to find out.

  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.