Ian Eslick wrote: > Redefining a class via defclass, thus initiating calls to change- > instance-for-redefined-class is harder because it is lazy in some > (or all) lisps. When a defclass causes a change in a standard class > schema, the instances of that class are updated at latest when an > object slot is next accessed. update-instance-for-redefined class > can be overloaded by the user for any given class. > > In standard lisp, there is a problem that if you redefine the class > twice and haven't touched the object in the meantime, you will have > a different transformed state for each object and only some of them > will have had change-instance-for-redefined-class called on them. > At least this is empirically true under Allegro.
FWIW, I was thinking this very same thing for my personal project. I'd probably try out versioned objects. Each new version of a class is saved in Elephant, and there's a middle layer which takes care of redefining objects whose classes changed.
I certainly haven't thought this through, but I'd hope it's not bad in common cases...
Tayssir _______________________________________________ elephant-devel site list elephant-devel@common-lisp.net http://common-lisp.net/mailman/listinfo/elephant-devel