Kenneth Tilton wrote:
> 
> Ramarren wrote:
>> On Tue, Mar 24, 2009 at 9:00 PM, Kenneth Tilton <kentil...@gmail.com> wrote:
>>> btw, If this version of Cells-Gtk is built on the latest Cells the
>>> with-integrity call can be omitted (but is harmless) because the SETF code
>>> will notice no one is managing integrity and take over integrity management
>>> itself.
>> Well, it is built on slightly modified Cells from common-lisp.net CVS,
>> so I don't know how latest it is. It says last modified five months
>> ago. I tried looking into the source, but the SETF in question
>> contains a COND which completely confused me... I mean, if it signals
>> an error saying that it has to be wrapped in with-integrity, then why
>> doesn't it just do it, especially considering that it does just that
>> in the other branch?
> 
> Well, first of all, the second branch happens only if we are not already 
> under integrity management and is just being helpful as I indicated by 
> auto-supplying IM. That is just a little convenience.
> 
> Once we are under IM, one SETF needs to finish before the next begins. 
> (Yes, wild and crazy types can bind *defer-changes* to nil and wreak 
> havoc. Let's forget them.)
> 
> Now consider what happens if the internals silently defers a setf when 
> it sees IM underway already IIRC:
> 
> (print (setf (^x) 42))
> -> a closure in which the desired state change gets bottled up until it 
> is time to run. No, wait. I think I changed that to actually say 
> :DEFERRED or something. And more confusing (they likely will not think 
> to capture and log the the return value of the SETF since we all know 
> what that has to be, right? 42!) no propagation happens.

No, sorry, propagation happens, just not when we expect it. But in the 
rare case where one might:

    (setf (^x) 42)

    (if (= (^x) 42)...

The test will fail because X still holds the old value.

kt


_______________________________________________
cells-gtk-devel site list
cells-gtk-devel@common-lisp.net
http://common-lisp.net/mailman/listinfo/cells-gtk-devel

Reply via email to