Re: Redefining structure accessors (summary)

Raymond Toy <[email protected]>
Newsgroups gmane.lisp.cmucl.devel
Message-ID <[email protected]>
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
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.