Subject: Re: Why is Scheme not a Lisp?
From: Erik Naggum <>
Date: Tue, 12 Mar 2002 23:20:41 GMT
Newsgroups: comp.lang.lisp
Message-ID: <>

* Erann Gat
| I hesitate to ask this question because I really don't want to start a
| flame war.  To me it seems clear that Scheme is a dialect of Lisp.  The
| Scheme standard says it's a dialect of Lisp.  Many textbooks say it's a
| dialect of Lisp (e.g. Norvig's book, which has a chapter called "Scheme -
| an uncommon Lisp".  Quiennec I believe also includes Scheme as a dialect
| of Lisp.)

  The "Lisp" Scheme is a dialect of is no longer the current meaning of
  "Lisp".  It is somewhat like calling English a dialect of German because
  of ancient history that has since between invalidated by each of their
  separate evolution, Fahrvergnügen, Weltanschauung, Kindergarten, and
  Pennsylvania to the contrary notwithstanding.  There is also a very
  limited value in talking about "Germanic languages" in terms of your
  actual ability to use any of the Germanic languags.  You do not order the
  "vertebrate" in a restaurant, but generally choose between fish or bird
  or meat.  In other words, there is a time when an abstraction and a
  commonality has completely ceased to be valuable.

  Because of this accident a long time ago, people who hear that "Scheme is
  a Lisp" tend to think that what they have learned is valid for some other
  Lisps they meet, too.  Today, this is flat out wrong.  It used to be
  somewhat true _before_ Common Lisp, because "Lisp" had no particular
  direction on is own, so Scheme was not much different from the rest,
  which had many serious internal differences, which would pale the Scheme
  differences in comparison.  After Common Lisp, this is no longer true,
  because the whole point was to consolidate and compromise away those
  differences.  Therefore, there is no _present_ value to make Scheme look
  like or pretend be a Lisp.  The direction that Scheme took was _not_ part
  of this consolidation and compromise process, no matter how much this
  lexical scoping thing may be credited to Scheme (history has a way of
  showing that cross-pollination happens when the time is right), and
  Scheme is therefore the odd language out -- it left the Lisp family
  before the important shift.  Scheme is what the Lisp community did _not_
  agree upon.  That Scheme predates Common Lisp by several years strongly
  supports this view.  Those who were not enamored by Scheme, went on to
  work with the Lisp that remained.

  The Scheme that was a dialect of "Lisp" is no longer the same Scheme,
  either -- it has evolved quite a bit and in a very different direction
  than the _supposed_ other "dialects of Lisp".  By choosing a new name,
  the budding community also made it clear that it was departing from the
  rest of the Lisp fold to go independent.  When they got what they wanted,
  some mysteriously want back in the fold, and that is incomprehensible
  from an evolutionary stand-point, unless they intend to be predators on
  their heritage and want "Lisp" for themselves -- which is also what many
  object to when they hear "Scheme is a Lisp", because it no longer is in
  any meaningful sense that people immediately understand unless they are
  purposefully obtuse.

  Both of these clearly imply that it is counterproductive for both
  languages to claim to be dialects of each other, because the _evolution_
  and "growing apart" that Common Lisp and Scheme have done from whatever
  the ancient "Lisp" they could have been dialects of, is effectively
  _denied_ to have taken place when Scheme and Common Lisp are portrayed as
  just as closely related as they were, what, 25 years ago.  The message
  that is therefore actually being sent by "Scheme is a Lisp" is "neither
  Lisp nor Scheme have evolved in 25 years", and that is wrong and very,
  very counterproductive.

| Why is Scheme not a Lisp?  Does Scheme lack some necessary feature that
| is required to be considered a Lisp in your book?  Was Lisp 1.5 a Lisp?

  You _should_ be asking what "being a Lisp" means that would make "Scheme
  is a Lisp" and "Common Lisp is a Lisp" true.  The two languages and their
  attendant communities have drifted so far apart that there is nothing of
  value in their intersection.  Add D*lan to the fray, and I think there is
  actually _nothing_ left, and that "being a Lisp" is diluted beyond any
  possibly useful and informative meaning.

  So by saying "Scheme is not a Lisp" I do not deny the historical and the
  evolutionary commonality up to a particular point, I am just saying it in
  the same sense as "Homo sapiens is not a simian", although some would
  probably spend all day arguing that any evidence of evolution has yet to
  show up in, say, the Middle East.
  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.