From: Aleksy Grabowski Date: Fri, 6 Sep 2024 06:15:45 +0000 (+0200) Subject: Explain non_counted_backtracking a little bit more X-Git-Tag: v0.10.0~114^2~1 X-Git-Url: https://git.sagredo.dev/?a=commitdiff_plain;h=c922ed8b0abbbc65e4a2b25f289da655190daaf1;p=scryer-prolog.git Explain non_counted_backtracking a little bit more --- diff --git a/src/lib/iso_ext.pl b/src/lib/iso_ext.pl index 3eb00a3e..5c779b10 100644 --- a/src/lib/iso_ext.pl +++ b/src/lib/iso_ext.pl @@ -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 -> diff --git a/src/lib/ops_and_meta_predicates.pl b/src/lib/ops_and_meta_predicates.pl index 929165e3..d4f67671 100644 --- a/src/lib/ops_and_meta_predicates.pl +++ b/src/lib/ops_and_meta_predicates.pl @@ -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.