Subject: Re: What kind of Lisp should I learn if I want to start programing with Lisp?
From: rpw3@rpw3.org (Rob Warnock)
Date: Sat, 07 Feb 2009 23:10:50 -0600
Newsgroups: comp.lang.lisp
Message-ID: <hcSdnbNwZf3H9BPUnZ2dnUVZ_gWdnZ2d@speakeasy.net>
joswig@corporate-world.lisp.de <joswig@corporate-world.lisp.de> wrote:
+---------------
| p...@informatimago.com (Pascal J. Bourguignon) wrote:
| > Rainer Joswig <jos...@lisp.de> writes:
| > > EQUAL a gf.
| >
| > This cannot be, in a subset of CL.
| >
| > The criteria is that a program written in the subset must
| > execute the same in CL.
...
| > ...[example]...is not a valid CL program, therefore CL:EQUAL
| > being a generic function cannot be in a subset of CL.
| 
| Let's put it in a different package let it call CL:EQUAL
| if necessary (or whatever low-level, even implementation
| specific equal tests). Alternatively one could
| implement the functionality in the new package
| and provide a CL package (a legacy compatibility package ;-) )
| that just calls the new functionality.
| So CL:EQUAL is a function that calls GL:EQUAL.
| 'GL' = Generic Lisp.
+---------------

That's still not a "subset of Common Lisp", since a subset
must not require any special macros or libraries to be loaded
into the full CL first:

    1.7 Language Subsets
    ...
    For a language to be considered a subset, it must have the property
    that any valid program in that language has equivalent semantics and
    will run directly (with no extralingual pre-processing, and no special
    compatibility packages) in any conforming implementation of the full
    language.

Of course, you could *define* a subset of your GL, say, "GL-",
that was a proper subset of CL, but it doesn't sound like your
full GL is going to be one.

Your "GL" proposal (and ISLISP, and others mentioned) actually brings up
a basic problem with subsets of CL [that I mentioned before, albeit
indirectly], namely, that CL has so many not-quite-orthogonalities
that one is strongly tempted to "fix" some of them in the process of
defining a smaller language... whereupon one ends up with something
that isn't a proper "subset".

But if one *doesn't* fix them, then the corners that are left sticking
out tend to drag in far too much of full CL, and the "smaller" language
ends up being not that much smaller after all.

It's quite a dilemma, actually...


-Rob

-----
Rob Warnock			<rpw3@rpw3.org>
627 26th Avenue			<URL:http://rpw3.org/>
San Mateo, CA 94403		(650)572-2607