From: Peter Seibel
Subject: UPDATE-INSTANCE-FOR-REDEFINED-CLASS and :default-initargs
Date: 
Message-ID: <m33c876xyz.fsf@javamonkey.com>
Is there a particular reason that UPDATE-INSTANCE-FOR-REDEFINED-CLASS
doesn't pass the values of :default-initargs when invoking
SHARED-INITIALIZE the way MAKE-INSTANCE does. That is, if I have this
class:

  (defclass foo ()
    ((x :initarg :x :accessor x)))

and make some instances and then change the definition to this:

  (defclass foo ()
    ((x :initarg :x :accessor x)
     (y :initarg :y :accessor y))
    (:default-initargs :y 10))

The updated instances have an unbound Y slot. Similarly, if the
inherited :default-initargs contained a value for the new slot, it is
not passed to SHARED-INITIALIZE.

REINITIALIZE-INSTANCE also seems (both by experimentation and
according to the spec) to not pass along :default-initargs. Is there
some philisophical point about the purpose of :default-initargs that
I'm missing?

-Peter

-- 
Peter Seibel                                      ·····@javamonkey.com

         Lisp is the red pill. -- John Fraser, comp.lang.lisp