Clauses and attribute variable hooks are identified by their reference data type. The predicates deposita_ref/1 respectively depositz_ref/1 will assume the given clause or hook for the duration of the continuation, whereas the predicate withdrawa_ref/1 respectively withdrawz_ref/1 will retire the given clause or hook for the duration of the continuation.Example:
hook(V, T) :-
write('bind '), write(V),
write(' to '), write(T), nl.
?- sys_ensure_hook(X, hook), X = 99.
bind _A to 99
X = 99.
The predicate sys_ensure_hook/2 takes care of the compilation of
a hook into a hook refer-ence in case the hook is not yet
associated with an attribute variable for the duration of the
continuation. The variant sys_ensure_hook/3 does the same job
during the execution of the given goal.
The predicate sys_assume_cont/1 temporarily pushes the given goal on the continuation queue. For more information on the continuation queue see the module cont.
The following assumption toolbox predicates are provided: