Nikodemus Siivola <nikodemus@...> writes:
> 2009/9/18 Christophe Rhodes <csr21@...>:
>> I seem to remember having this conversation before: at least AMOP
>> mandates the old (un"fixed") behaviour: there is no
>> :direct-default-initargs argument to ensure-class in the expansion of
>> defclass if no :default-initargs defclass argument is present. CLHS
>> 4.3.6 is unfortunately silent on the issue; the known workaround for the
>> AMOP interpretation is to use (:default-initargs) in the new class
> I don't see this requirement in AMOP.
> On p. 149 it says
> "The default initargs class option, if it is present in the defclass
> form, becomes the value of the :direct-default-initargs keyword
> argument to ensure-class. [...]"
> Nowhere in the surrounding text do I see an a specification to the
> effect that an absent DEFCLASS option could not be defaulted, and to
> me the sentence above seems to allow defaulting.
> Am I misreading this, or missing something else?
Well, there's the "Initialization of Class Metaobjects" section, which
| Unless there is a specific note to the contrary, then during
| reinitialization, if an initialization argument is not supplied, the
| previously stored value is left unchanged.
and there is no such specific note for :direct-default-initargs. On the
other hand, arguably that applies to the initialize-instance &c
initialization protocol, and not to defclass/ensure-class.
So, um. (I'm technically on holiday, so not about to get terribly het
up about this :-)