Evaluation Algorithm of a Derived Data Member
The evaluation of a derived member relies on an algorithm that has the following properties:
-
It does not allow dependence cycles. It detects and reports them dynamically: an exception of type IlsCycle is thrown.
-
A derived member is re-evaluated only if it is eager or if its re-evaluation is required to recompute another derived data member that transitively depends on it. For more information, see the previous section Eager Versus Lazy Derived Data Members.
-
A derived member is re-evaluated only if active Server data—that is, entries, relations, or other derived data members—on which it depends have been modified.
-
A given derived member is evaluated at most once during a re-evaluation.
-
A derived member that is neither directly nor transitively eager will be re-evaluated only if it is accessed explicitly.
-
The evaluation algorithm behaves incrementally because it caches derived members as it computes them. Derived data members are not recalculated unless they need to be. In particular, derived members that are needed more than once during an evaluation are evaluated only once and the evaluation algorithm can thus improve its response time.
-
Since it uses the system stack, the algorithm can be traced or debugged with a conventional debugger.






