11.2.4 Control
- :P
,
:Q ISO - prove P and Q
- :P
;
:Q ISO - prove P or Q
- +M
:
:P ISO - call P in module M
- :P
->
:Q;
:R ISO - if P succeeds, prove Q; if not, prove R
- :P
->
:Q ISO - if P succeeds, prove Q; if not, fail
!
ISO- cut any choices taken in the current procedure
\+
:P ISO- goal P is not provable
- ?X
^
:P - there exists an X such that P is provable (used in
setof/3
and bagof/3
)
block
:P declaration- declaration that predicates specified by P should
block until sufficiently instantiated
call(
:P)
ISOcall(
:P,...)
- execute P or P
(...)
call_cleanup(
:Goal,
:Cleanup)
- Executes the procedure call Goal. When Goal succeeds
determinately, is cut, fails, or raises an exception,
Cleanup is executed.
call_residue_vars(
:Goal,
?Vars)
- Executes the procedure call Goal. Vars is unified
with the list of new variables created during the call that remain
unbound and have blocked goals or attributes attached to them.
- +Iterators
do
:Body - executes Body iteratively according to Iterators
fail
ISO- fail (start backtracking)
false
- same as
fail
freeze(
+Var,
:Goal)
- Blocks Goal until
nonvar(
Var)
holds.
if(
:P,
:Q,
:R)
- for each solution of P that succeeds, prove Q; if none, prove R
once(
:P)
ISO- Find the first solution, if any, of goal P.
otherwise
- same as true
repeat
ISO- succeed repeatedly on backtracking
true
ISO- succeed
when(
+Cond,
:Goal)
- block Goal until Cond holds
Send feedback on this subject.