Kent M Pitman <firstname.lastname@example.org> wrote:
| email@example.com (Rob Warnock) writes:
| > Note: From time to time I have noodled around with the notion of
| > defining a subset of CL which meets the constraints of CLHS 1.7
| > and is still sufficiently rich to be interesting and/or useful
| > [e.g., for "scripting" or CGI or the like]. It's not as easy as
| > it might at first appear. Little fiddly bits in one corner of
| > the language interact in subtle ways with fiddly bits in other
| > corners of the language.
| An alternative might be to start from ISLISP and work up.
I *have* actually considered that. But after several cursory readings
of the ISLISP spec, I have come to the provisional conclusion that
ISLISP, while quite interesting *in its own right*, isn't really
a suitable candidate for "a subset of Common Lisp as specified by
ANSI X3.226" under the constraints of CLHS "1.7 Language Subsets".
For one thing [and this is a big one!], as far as I can tell, getting
a non-trivial ISLISP program to load into a CL implementation would
require at least *some* sort of "compatibility package" to have been
pre-loaded into the CL implementation, something that is expressly
excluded from the definition of a CL subset by CLHS 1.7.
That is, to me at least, whether there even *can* be one or more
useful "subsets of CL" in the strict CLHS 1.7 sense is separate
and very different question from that of what "a good small Lisp"
could/would/sholud look like... and whether Scheme or ISLISP or
XYZ [name your favorite] is a good starting point for that. Both
questions are interesting, but the one I was addressing in the
above-quoted "Note" was the former, not the latter.
By the way, in the interest of exposing a little of my motivation
for looking into the "subset" question, let me say that I am
perfectly happy these days to use a "full" Common Lisp for almost
all of my Lisp-family needs [e.g., I haven't written any new Scheme
code for several years now!], but there are a *few* situations
where my usual CL environment (CMUCL) cannot run [or at least not
conveniently enough for it to be feasible] and it would be very
nice to have an implementation of a small subset of CL which
*could* run. Being a "subset" in the CLHS 1.7 sense would mean
that most of the code could be developed & tested in the "full"
environment. It would also make it more likely to be portable
to some other "full" environment than the one I currently favor.
Plus, I have yet to hear of anyone who has managed to come up
with a non-trivial yet useful "subset of ANSI CL" in the strict
CLHS 1.7 sense. It's a bit of an intellectual challenge.
| ISLISP is not specifically ANSI CL compatible, mind you, but I like
| to think of it as "culturally compatible" with ANSI CL... Certainly
| moreso than, say, Scheme. It's quite small, and lacking a lot of the
| power of CL, but what it has got is in a style that's similar to CL.
Based on my somewhat-limited reading of the spec, I quite agree
on all of these points.
| Whether it would suit any given purpose is hard to know, which
| is why you'd have to look for yourself.
(See the above...)
Rob Warnock <firstname.lastname@example.org>
627 26th Avenue <URL:http://rpw3.org/>
San Mateo, CA 94403 (650)572-2607