

Re: several hundred ugly things

        ...  You develop your program using whatever parts of the full
        language you need, then compile in a way that trims away anything that
        wasn't used.  This creates a subset of Common Lisp that exactly fits the
        needs of the application in question.  A simple version of this is trivial
        to implement in any system that has a copying GC; ...
    If only that were true.  For example, a routine that uses + implicitly
    uses bignums and complex numbers, plus ERROR to handle problems like
    (+ 'a '(foo)).  Bignums require GC.  ERROR uses FORMAT, READ, and
    EVAL.  FORMAT uses..., and pretty soon you've got the kitchen sink

Well, in addition to just depending on the GC, you probably also want to
give the user some way of declaring that his application doesn't use
certain features such as bignums, complexes, floating point, the error
system (just terminate instead), circular printing, or whatever.  The point
I'm trying to make is that you shouldn't try to impose a single subset on
everyone, but should allow each user to select the subset he needs.

-- Scott