Blocks Goal until the Condition is true.
callable, must be nonvar and one of:
False until X is nonvar.
False until X is ground.
dif(X,Y) would block.
True if both conditions are true.
True if at least one condition is true.
callable, must be nonvar
Depends on Goal.
| ?- when(((nonvar(X);?=(X,Y)),ground(T)), process(X,Y,T)).
Call errors (see ref-sem-exc).