[PEAK] Trellis + expensive operations
Phillip J. Eby
pje at telecommunity.com
Wed Nov 26 12:29:33 EST 2008
At 10:50 AM 11/26/2008 +0200, Sergey Schetinin wrote:
>I think this can be accomplished by creating a cell type that when it
>runs does not recompute itself unless there are listeners. If there
>are none it just sets some flag that indicates that it will need to
>recompute on next access and preserves its dependencies. Its get_value
>would check that flag and actually compute the value and cache it, it
>would also need to make sure that dependencies are updated at this
>point.
I don't see how that's different from a @compute rule, except that
@compute rules don't keep track of whether their value is dirty, and
so are always recalculated "on next access" if there are no
listeners. However, as soon as that recalculation is done, if
there's a listener, then it keeps track of dependencies and is not
recalculated until they change.
I actually considered implementing @compute as you describe, but
found it to be over-complicated for the use case.
More information about the PEAK
mailing list