[cmucl-imp] Re: Redefining structure accessors (summary)

Raymond Toy toy.raymond at gmail.com
Tue Mar 16 21:48:43 CET 2010


On 3/16/10 10:09 AM, Helmut Eller wrote:
> * Raymond Toy [2010-03-16 14:37+0100] writes:
>
>   
>> Let's see if I can summarize the discussion.
>>
>> Attempts to redefine structure accessors should be a cerror.  If you
>> continue, then the structure is undefined (mostly) and the function is
>> created.  This seems better than the current behavior of just warning
>> you about it and undefining the structure anyway.
>>
>> (compile accessor new-def) should also be a cerror.
>>
>> (setf (fdefinition accessor) new-def) shouldn't do anything special.
>>
>> The structure printer and inspector should be modified to use
>> %instance-ref so that we can still print and inspect structures even if
>> the accessor has been redefined.
>>
>> How does that sound?
>>     
> Fine with me.
>
>   
Actually, there's one other alternative.   When the accessor is
redefined, we can silently (or noisily) replace the dsd-accessor
function with nil.  Then we don't get the strange behavior of our
redefined function being used to access the slot.   This also means we
can't actually access the slot ourselves either because we'll try to get
the fdefinition of nil.  But the structure and everything else remains
defined.

(I have not tried that out yet.)

I also notice that you can redefine the structure predicate without
warning.  Perhaps we should warn about this too.

Ray




More information about the cmucl-imp mailing list