On 9/12/06, Michael Naunton <michael@naunton.us> wrote:
On Mon, 2006-09-11 at 15:33 -0400, Ken Tilton wrote:
> kt wrote:
>
> If A is eager and depends on B and A has an observer that
> really really wants to stay on top of reality....
>
> I just had Cells4 kinda thought: what if all Cells are (in some new
> respect) lazy unless observed (directly or indirectly thru someone
> that is observed)?
I was using Cells4 today :)
So, all cells are lazy. Check.
Unless observed. Check.
Observed = I ask for a cells value explicitly (in which case it is
transiently observed,) or a GUI, etc, subscribes to it.
I do not know about your C4, but no: Observation is not reading. Observation is an explicit declaration that one needs certain code to run when a cell changes value, and these explicit declarations are needed because the cells engine runs around changing values willy-nilly so there is no way for a programmer to handle those changes unless we create a mechanism dedicated to that express purpose. aka "observing". But we really need these observers to run. An observer might propagate the state "stop!!!" to an anti-lock brake system (via its own API).
We have other code that reads Cells inside Cell rules and outside them in imperative code kicked off, say, by OS events. Imperative code (again, event-handlers are an example) reads what it reads. Cells guarantees they will get accurate "current" values. But there is no need for a Cell to ensure (and in fact it would be inappropriate) such event-handling code runs because some cell-mediated state gets read during event handling. Reads from Cell rules are not interesting to rerun until somehow somewhwere we come to an Observer trying to stop a car or launch a missile or whatever.
kt