Larry Clapp wrote:
I understand (I think ...) what :once-asked *does*, I want to know what it *means*.
In other words, the other two options seem to answer the question "when is this cell lazy?" Well, an :always cell is always lazy -- it's not recalculated until and unless you ask for it. An :until-asked cell is lazy until you query it once, then it's non-lazy from then on.
"once-asked" seems to answer a *different* question, "when is this cell evaluated?" It's evaluated once, when created, and then only when queried.
Is there any single "question" that all three answer, or are they just inconsistent?
Once-asked would be "un-lazy until you query it once" (ie, consistent) but it also looks to be vestigial: all code seems to treat it the same as always.
If I missed it in my brief scan of the code, it would have to do with model instance initialization. Normal cells get evaluated and observed very soon after initialize-instance, during md-awaken. An always lazy cell just sits there until someone actually reads the corresponding slot-value, then resumses sitting and not reacting to dependencies. An until-asked cell likewise just sits there until the slot is read, but then recalculates when any dependency changes. A once-asked cell would calculate during md-awaken but then be lazy ever after.
So there may be a gap in the code or maybe I missed it. Lazy stuff does not get a lot of use so it is possible there is a hole there.
kt