Newsgroups: comp.lang.misc,comp.lang.lisp,comp.lang.scheme
Path: cantaloupe.srv.cs.cmu.edu!nntp.club.cc.cmu.edu!hudson.lm.com!newsfeed.pitt.edu!gatech!swrinde!pipex!uknet!festival!edcogsci!jeff
From: jeff@aiai.ed.ac.uk (Jeff Dalton)
Subject: Re: Symbol space in Scheme v. Lisp
Message-ID: <D30wu4.8wp@cogsci.ed.ac.uk>
Sender: usenet@cogsci.ed.ac.uk (C News Software)
Nntp-Posting-Host: bute.aiai.ed.ac.uk
Organization: AIAI, University of Edinburgh, Scotland
References: <3fv8pn$llu@gort.oit.umass.edu> <D2vG9H.58E@rheged.dircon.co.uk>
Date: Thu, 26 Jan 1995 17:34:51 GMT
Lines: 72
Xref: glinda.oz.cs.cmu.edu comp.lang.misc:20156 comp.lang.lisp:16513 comp.lang.scheme:11881

In article <D2vG9H.58E@rheged.dircon.co.uk> simon@rheged.dircon.co.uk (Simon Brooke) writes:

>OK, Stick-my-neck-out time again.
>
>I don't know which LISP 1.5 (the LisP which was first widely used)
>was, but I *think* it was a LISP2.

Lisp 1.5 was rather strange.  There were separate function values
(the properties EXPR, FEXPR, SUBR, etc), but you could also use
variables w/o having to resort to FUNCALL.  The FEXPR (etc) values
were checked first.  Also, the function position of a function call 
could be a form that would be evaluated.  Repeated evaluation of
variables and other forms was possible.

>Second, your question: my view is that the reason for the difference
>is that the Scheme people were involved in a sort of clean room
>redesign. They didn't care whether existing code could be ported to
>their system, they wanted to demonstrate language issues as clearly
>and cleanly as possible. Scheme is the result, and although they made
>choices which I would not have, it looks very elegant to me.
>
>The Common LISP development people had a different imperative. They
>wanted to coalesce as much as possible of the LisP community around a
>single variant of the language, and that involved holding onto
>features which were perhaps less elegant, but which people were used
>to using or which were essential to implementation hacks in important
>bits of code. Common LISP is in a sense a pragmatic redesign: 'look,
>we've got these parts in the parts bin, what's the most popular
>compromise we can make out of it?'. Personally I still deeply dislike
>some parts of that compromise, but it's what we've got for now.

I'm not sure the Scheme folk were completely indifferent to existing
code (and programming knowledge, which includes syntax), but I'll
leave that to someone else.

Your view of Common Lisp (not capitalization) is basically right
in that it was more pragmatic.  But I think your accout of the
details is somewhat misleading.

Some of the people involved in the design of Common Lisp may have
wanted to "coalesce as much as possible of the LisP community around a
single variant of the language", I don't know.  But if so, it didn't
have all that much effect on the contents of the language.  Moreover,
CL started out as a way to unify several successors to MacLisp.
Other varieties of Lisp had considerably less importance.

After X3J13 started, by which time CLtL I already existed, people
did occasionally argue that the language should change in a way
that would decrease the difference between CL and some other kind
of Lisp, but such arguments were fairly rare, and they were not
usually successful.

Existing code did make a difference, but it did not prevent fairly
radical changes (e.g. to full lexical scoping).  Moreover, there a
number of cases where significant existing stuff was left out.  For
instance, Flavors was almost a de facto standard as an O-O extension
among the Lisps closest to Common Lisp.  Flavors were used heavily in
ZetaLisp / Lisp Machine Lisp, and they were an important part of VAX
NIL.  Some ZetaLisp Flavors implementation code had been ported to
Franz Lisp.  Indeed, a number of Common Lisps have provided a version
of Flavors at one time or another.  And yet they were not added to 
Common Lisp.

It's also important to realize that many things were cleaned up in
Common Lisp (for instance, compilers and interpreters had to use
the same scoping rules), and many things were more precisely defined
than they had been in the usual reference manuals for other Lisps.
Most things in Common Lisp are there for fairly good reasons.

-- jeff


