Kenny Tilton writes:
Thomas F. Burdick wrote:
At this point, something should handle the UNBOUND-CELL error, and make SUM unbound.
well, I always get a kick out of digging and digging and finally there it is in all its simplicity:
(funcall (c-rule c) self)
...or something like that. So that would be where the trap for unbounditude would go.
Now, if I call ADDER-SUM, it should kick off SUM's rule again,..
Why? rules get run when dependencies change or the state is unknown (only after make-instance, except for lazy cells which have been invalidated but not recalculated). The unbounditude is effectively a cached result, so there is no need to kick off the rule.
Good point. I was thinking we'd kick of the rule here, so the user could see which slot was ultimately responsible for the unbound error -- but we can just cache that information, hell, cache the condition itself, and signal it when needed.