On Thu, 06 Jan 2011 10:33:43 +0100, Svante Carl v Erichsen said:
Am 06.01.2011 01:31, schrieb Scott L. Burson:
In section 7.1 it says: "The :initform for a shared slot may be used when defining or redefining the class."
I think that this is the most directly applying passage for this issue. I am not entirely sure about the exact intended meaning of "may be" and "used", but at first glance it seems to me that this means that both the "SBCL way" and the "ABCL way" do conform. Portable code thus should not rely on either behaviour; it seems that whether :initform forms of shared slots are evaluated during definition or during first instanciation is unspecified.
Your last sentence is definitely not true because the dictionary page for defclass says that the shared slot initform is evaluated in "the dynamic environment in which the defclass form was evaluated".
I think it should really start "The value of the :initform for a shared slot..." The point here is that the value is remembered and is "used" when needed.
It says "may be" because it is not used if the slot is already bound.