[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Issue CLOS-MACRO-COMPILATION, version 1



Sandra writes:

``The description of DEFMETHOD in CLOS chapter 2 talks about calling
FBOUNDP and signalling an error if the function is not a generic
function, or if it is a generic function but the lambda list of the
method is not congruent.  Clearly this shouldn't happen at
compile-time.  I agree that the behavior you suggest makes more sense.
''

To be slightly pissant about it, Chapter 2 doesn't say this exactly.
It says that if FBOUNDP of the function specifier is NIL, certain
actions take place, and if other conditions hold, errors are
signalled.  The wording is chosen so as to not imply that FBOUNDP is
called at any particular time, nor is it necessary for FBOUNDP to ever
be called. Just as in the current ADJUST-ARRAY issue, the operative
phrase is about whether the result of a call would be something
particular.

Chapter 1 and 2 are written in such a way that the semantics of a
correct, well-formed program are specified. The model that Linda and I
(the two writers) had in mind was that of well-formed programs being
either loaded into a fresh Lisp or of being compiled in a fresh Lisp
and then loaded into a fresh Lisp. We tried to specify the minimally
required semantics of such well-formed programs. 

The question I have about the process going on with respect to the
CLOS-MACRO-COMPILATION issue is whether the fine-grained behavior of
CLOS under various compilation/evaluation situations is being
over-specified. 

At this stage of the game I worry that we might go a little too far in
one direction in specification when we are actually engaged in design
work. This isn't intended to be a criticism of any committees, but I
would feel a lot more comfortable with a conservative specification
that defined well-formed programs being loaded or compiled in fresh
Common Lisps with a pretty simple eval-when model that is easier to
specify and which makes it easy for all but the hairiest
compilation-environment-frobbing programs to be written.  What tips me
off to this is the heroic effort I see Sandra and the other compiler
committee members making to understand the ultimately hairy
situations.

I know this makes the specification of Common Lisp more like
specifications of Ada or PASCAL, but at least we have a better chance
of not blowing it.

			-rpg-