Hello Pros of Common Lisp,
Here is my attempt at starting a significant (and hopefully useful) debate on a subject squarely about Common Lisp and its internals.
My main stance here is to state that I have yet to see, in a significant application, any use of functions #'cl:make-instance-obsolete and #'cl:update-instance-for-redefined-class and of the underlying machinery that support the
remorphing of instances following a class redefinition (through a subsequent cl:
defclass most likely). I can state the same thing about #'cl:update-instance-for-different-class and #'cl:change-class.
The machinery required of any CL implementation to properly support those functions (mentioned here above) is quite significant in its complexity and usually imposes a
sizeable performance penalty on the speed of any instance slot access.
A different choice of class redefinition semantics can lead to an implementation of
CLOS with much reduced instance slot access overhead.
The necessity of supporting instance
remorphing should therefore be well motivated by very significant gains in application code performance (in speed and/or size and/or expressiveness power).
Can anyone of you point me to some evidence of such application level usefulness?
Is there any notorious
usecase of this (instance
remorphing) since its inclusion into ANSI CL?