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

reinitialize-instance



It was suggested that there be a general facility in CLOS to reinitialize an
instance.  It would then be used for updating classes and generic functions.

The following is a strawman proposal for the standard method for
reinitialize-instance.

(defmethod reinitialize-instance
   ((instance standard-object) &rest reinit-args &key &allow-other-keys)
   (apply #'initialize-instance
       (default-initargs (class-of instance) reinit-args)))

This uses the code for initialize-instance to do whatever it would ordinarily
do, using the standard defaulting method for the arguments.  It also allows
users to write :before and :after methods on reinitialize-instance to take
special actions for reinitialization.

Potential problems
1) There is no argument legality checking.
2) reinitialize-instance does not see the defaulted list of initargs