# Re: Amendments requiring additional writing

• To: Common-Lisp-Object-System@SAIL.STANFORD.EDU
• Subject: Re: Amendments requiring additional writing
• From: David A. Moon <Moon@STONY-BROOK.SCRC.Symbolics.COM>
• Date: Thu, 1 Oct 87 11:50 EDT

    Date: 1 Oct 87 08:35 PDT
From: Danny Bobrow <Bobrow.pa@Xerox.COM>

I mostly agree.  I notice consturctors still in there, although that is
not yet agreed to. But the oner serious remaining problem is in the
wording of the last paragraph (not a new one):
The \CLOS\ guarantees that {\bf defclass} can be used to change
the definition of an existing class that was previously defined by
{\bf defclass} as long as the {\bf :metaclass} option is not used
in either the old or the new definition.  Whether {\bf defclass} is
allowed to change the metaclass and whether redefining a class
causes existing instances to be updated is up to the implementor of
the particular metaclass.  The \CLOS\ Meta-Object Protocol'' will
describe how to control this.

The problem is that defclass without a metaclass option can be used with
class-for-redefinition to keep the class other than standard-class.  I
would prefer to say:

The \CLOS\ guarantees that the user can change
the definition of an existing class that is a standard-class,
and cause its instances to be updated.
Whether redefining a class that is not a standard-class
causes existing instances to be updated is up to the implementor of
the particular metaclass.  The \CLOS\ Meta-Object Protocol'' will
describe how to control this.

I can't see any difference between these two paragraphs, except that your
suggested replacement is less direct, because the reader has to turn elsewhere
to find out what a standard-class is.  As far as I can tell there are no
programs that would work under the first paragraph but not under the second.

However, I continue to have almost no opinion on metaclass issues until I
have seen a description of metaclasses that I can understand.