[elephant-devel] Status of Leslie's question and Sean's patch?

Ian Eslick eslick at csail.mit.edu
Fri Dec 21 04:34:13 UTC 2007


Hi Leslie,

Elephant does not pay any attention to type information defined as  
part of a slot metaobject.  The lisp will complain during  
deserialization when you try to write the PIC to the changed slot, now  
of type STRING.  Only OpenMCL, as far as I know, enforces type  
checking by default and asserts errors.  Allegro and SBCL will quietly  
assign the wrong type to the slot, if I recall correctly.  Lispworks  
will probably complain too.

The right user approach is to provide a function to walk over  
instances and update their representation or zero them out.  Other  
than an assertion on deserialization or a general warning on type  
change, I can't think of a really useful default policy.

Have you tried this and seen what happens?  What Lisp are you using?

Ian

On Dec 20, 2007, at 10:38 PM, Robert L. Read wrote:

> I haven't answered this because I've spent the last three days
> trying to get Sean Ross's patch to work; the tests run green with it,
> but if you run the tests again they fail.
>
> The easiest way to answer this problem is to try it.
>
> I may have to back out the changes that Sean sent in; they interact  
> very
> badly with the postmodern interface --- or at least the most recent
> version of it.
>
> I suspect that I may also be dealing with an SBCL bug of some kind in
> the MOP.
>
> I never set out to spend three days on this---the solution always  
> seemed
> to be right around the corner.
>
>
>
> On Wed, 2007-12-19 at 10:50 +0100, Leslie P. Polzer wrote:
>> The user's guide talks about added and discarded slots, but what's  
>> the behaviour
>> when a slot changes?
>>
>> Suppose I represent a picture with an object PIC that contains the  
>> location of
>> a file holding it. I store a bunch of other objects that each have  
>> a picture:
>>
>> (defpclass myobj ()
>>  ((picture :type PIC)))
>>
>> Now I decide later on that a string would be enough
>>
>> (defpclass myobj ()
>>  ((picture :type STRING)))
>>
>> What will happen? A bad thing, i.e. a deserialization error?
>> Is there a way to define how a PIC should be converted to a STRING?
>>
>>  Leslie
>>
>
> _______________________________________________
> elephant-devel site list
> elephant-devel at common-lisp.net
> http://common-lisp.net/mailman/listinfo/elephant-devel




More information about the elephant-devel mailing list