Explain non_counted_backtracking a little bit more

This commit is contained in:
Aleksy Grabowski
2024-09-06 08:15:45 +02:00
parent 12a61cdff8
commit c922ed8b0a
2 changed files with 8 additions and 3 deletions

View File

@@ -223,6 +223,7 @@ run_cleaners_without_handling(Cp) :-
%% call_with_inference_limit(Goal, Limit, Result).
%
% Similar to `call(Goal)` but it limits the number of inferences for each solution of Goal.
% Calls to it may be nested, but only the last limit will be in power.
call_with_inference_limit(G, L, R) :-
( integer(L) ->
( L < 0 ->

View File

@@ -5,9 +5,13 @@
:- op(1199, fx, meta_predicate).
/* this is an implementation specific declarative operator used to implement call_with_inference_limit/3
and setup_call_cleanup/3. switches to the default trust_me and retry_me_else. Indexing choice
instructions are unchanged. */
% Declarative operator used to implement `call_with_inference_limit/3` and
% `setup_call_cleanup/3`. Compiler switches to the default trust_me, retry_me_else
% and some other instructions for all predicates the marked with it. Indexing
% choice instructions are unchanged.
%
% Default instructins are not subject to inference counting, so their execution
% will not be considered if they happen to be called by `call_with_inference_limit/3`.
:- op(700, fx, non_counted_backtracking).
% arithmetic operators.