Newsgroups: comp.lang.lisp
Path: cantaloupe.srv.cs.cmu.edu!das-news2.harvard.edu!news2.near.net!news.mathworks.com!news.duke.edu!news-feed-1.peachnet.edu!gatech!howland.reston.ans.net!EU.net!uknet!festival!edcogsci!jeff
From: jeff@aiai.ed.ac.uk (Jeff Dalton)
Subject: Re: Lisp: A tower of babble?
Message-ID: <Cy6y6z.97q@cogsci.ed.ac.uk>
Sender: usenet@cogsci.ed.ac.uk (C News Software)
Nntp-Posting-Host: bute-alter.aiai.ed.ac.uk
Organization: AIAI, University of Edinburgh, Scotland
References: <Cy1H5H.5I8@cogsci.ed.ac.uk> <MIKE.94Oct23195425@majestix.cs.uoregon.edu> <19941024T035011Z.enag@naggum.no>
Date: Mon, 24 Oct 1994 19:01:47 GMT
Lines: 69

In article <19941024T035011Z.enag@naggum.no> Erik Naggum <erik@naggum.no> writes:
>[Jeff Dalton]
>
>|   The idea that Lisp is a single language has done -- and is doing --
>|   tremendous damage.
>
>[Mike Haertel]
>
>|   However, one could also argue that the absence of a single "Lisp" has
>|   done a tremendous amount of damage.
>|   
>|   But then, of course, the argument rages: Whose lisp?
>
>Jeff has repeatedly commented that Common LISP is not the only LISP,

So long as we're on me...  I also think we should write "Lisp" and not
"LISP".  (If you look at editions of CLtL you'll see a move in that
direction.  If you look at the Scheme defintion and the dpANS CL one,
you'll see "Lisp" (unless someone's changed it while I wasn't
looking).  So this isn't some idiosyncratic idea of mine.)

>   and he
>argues very strongly that one should not transfer arguments on Common LISP
>to "LISP" in general.  I'm a little unclear about the characteristics of
>these non-Common LISPs.

Some things are true of Common Lisp and not of various other Lisps.
So if you transfer them from CL to one of those other Lisps you'll
be wrong.  That looks like a pretty good reason not to transfer them.  :->
In any case, it's my reason.

Almost any characteristic can be varied.  For instance, Lisp 2 had
a non-list-based syntax as did the RLisp that was part of PSL.
Scheme has call/cc (Common Lisp doesn't), some different special
forms, a different way of doing macros, a distinction between
false (#f) and nil, and so on.  Scheme is also a much smaller
language.  Indeed, many Lisps are much smaller than Common Lisp.
Common Lisp is a so-called Lisp-2 (not to be confused w/ the
language Lisp 2): ie, it has separate variable and function-name
namespaces.  Scheme and EuLisp are among the Lisps that have a
single namespace.  Common Lisp includes an "object system" (CLOS)
but with no defined metaobject protocol.  EuLisp has a similar
(but simpler) object system (TELOS) that includes a MOP.  Many
other Lisps don't include object systems.  Common Lisp supports
full lexical scoping, as do Scheme and EuLisp; older Lisps
typically did not.  Lisp 1.5 and some others had full closures
over dynamically-scoped variables.  ZetaLisp and Franz Lisp
(maybe some others) had more restricted closures of that sort
(you had to list the variables to close over).  Common Lisp includes
"eval"; Scheme and EuLisp do not.  Common Lisp packages "happen at
read-time" and map source text to symbols (the same text refers to
different symbols in different packages); EuLisp modules work at a
later point: the same identifier (symbol) maps to different value in
different modules.  And so on for pretty much everything else.

>Jeff, it would be enlightening if you could list the alternatives you have
>in mind.  if you could make two sub-groups, one for general-purpose,
>portable and widely supported LISPs, and one for special-purpose or
>embedded LISPs, I think that would be very helpful.

Every Lisp that isn't Common Lisp is an example of a Lisp that
isn't Common Lisp.  I don't care whether they're widely supported,
special-purpose, or whatever.  Portable is not normally a property
of languages but of implementations.

For lists of what's currently available, consult the FAQ postings
for Comp.lang.{lisp,scheme}.

-- jeff
