[ Obsolete | Reference Manual | Alphabetic Index ]

delay(?Variables, +Goal)

Delay the Goal on all variables in the term Variables.
Variables
Any Prolog term.
Goal
A callable term.

This built-in predicate is obsolete!

Description

The specified goal Goal is made a suspended goal such that it will be woken whenever any of the variables in the term Variables is bound (even to another variable). This predicate is obsolete, a more precise control over suspending and waking is obtained using make_suspension/3 and insert_suspension/3,4 and with the suspend.pl library.

Modes and Determinism

Exceptions

(4) instantiation fault
Goal is not instantiated.
(5) type error
Goal is not a callable term.
(60) referring to an undefined procedure
Goal does not refer to an existing procedure.

Examples

[eclipse 1]: delay(X, writeln(hello)).

X = X

Delayed goals:
        writeln(hello)
yes.
[eclipse 2]: delay(X, writeln(hello)),
        writeln(one),
        X=1,            % causes waking
        writeln(two).
one
hello
two

X = 1
yes.
[eclipse 3]: delay([X,Y], writeln(X)), X=Y.
X

X = X
Y = X
yes.


See Also

suspend / 3, make_suspension / 3, insert_suspension / 3