This Jekejeke Minlog module provides the delay of goals until certain variable conditions are satisfied. The predicate freeze/2 delays until the first argument is instantiated. The predicate when/2 delays until the first argument succeeds.Example:
?- freeze(X, (write(foo), nl)).
freeze(X, (write(foo), nl))
?- freeze(X, (write(foo), nl)), X = a.
X = a
The delayed goal is allowed to fail or to succeed multiple times. The when/2 predicate cur-rently understands as conditions conjunction (C1; C2), disjunction (C1; C2), variable instanti-ation nonvar(V) and ground-ness ground(V).
The following suspend predicates are provided.