Path: utzoo!utgpu!news-server.csri.toronto.edu!bonnie.concordia.ca!uunet!mcsun!ukc!edcastle!aiai!jeff
From: jeff@aiai.ed.ac.uk (Jeff Dalton)
Newsgroups: comp.lang.lisp
Subject: Re: Is this the end of the lisp wave?
Message-ID: <3954@skye.ed.ac.uk>
Date: 16 Jan 91 19:01:04 GMT
References: <127724@linus.mitre.org> <5569@turquoise.UUCP>
Reply-To: jeff@aiai.UUCP (Jeff Dalton)
Organization: AIAI, University of Edinburgh, Scotland
Lines: 54

In article <5569@turquoise.UUCP> ahlenius@motcid.UUCP (Mark Ahlenius) writes:
>djb@babypuss.mitre.org (David J. Braunegg) writes:

>>OK.  What are the problems preventing a smaller, more efficient Lisp
>>so that we aren't forced to use the almost-a-programming-language C?
>
>There is a smaller, faster dialect of CL out there and as far as I
>know it is being taught in some of the major universities - its Scheme.

I'm not sure the Scheme folk think of their language as a "dialect
of CL".  A dialect of Lisp, yes, but not a Common one.  Nor am I
convinced that Scheme will be faster.  Standard Scheme, at least,
lacks many of the efficiency tricks (e.g., declarations) available
in CL.  However, Scheme is smaller and, consequently, easier to
implement and (for the most part) easier to understand fully.
It is still difficult to implement an efficient Scheme, despite
its size, but at least the effort will be concentrated on fewer
constructs.

Much of the reason Common Lisp appears to be so big is, in my opinion,
a matter of organization and presentation.  If we start with C and
then add in various libraries, it starts to look fairly large too.  On
the other hand, it's easier with C to distinguish the essential core
from the rest.  There isn't any reason, other than historical, why
Common Lisp couldn't be presented, and even implemented, in a more
C-like way, as a language plus libraries of procedures and data types.
The core language would still be larger than C, but it would also 
have greater capabilities.

A different Lisp design that tries to get some of the advantages of
both Common Lisp and Scheme is EuLisp, a Lisp being developed mostly
in Europe (hence the name).  The conceptual and implementational
complexity of EuLisp is controlled by the use of two mechanisms:
levels and modules.  

There are 3 levels in EuLisp, each an extension of the one below.
Level 0 is a "kernel" Lisp, not too far from Scheme.  Level 1 is about
the size and scope of Le Lisp or Franz Lisp.  Level 2 is close to
Common Lisp.  The advantage of levels over three separate languages
is, of course, that they fit together in a coherent way.

In addition, constructs with related functionality (a data type and
procedures for operating on its instances, for example) are often
packaged together in a module.  If your program makes use of such
facilities, you must request the appropriate module, just as you must
include the appropriate ".h" file in C.

Modules are a finer division than levels.  An implementation aims
at a particular level, and each level has certain modules as standard.
An example of a difference between levels is that level 0 has only
the most basic mechanisms for defining new classes, while higher
levels have capabilities similar to those of CLOS.

-- Jeff