From: Markus Triska Date: Wed, 15 Mar 2023 20:17:06 +0000 (+0100) Subject: remove no longer needed queue attributes after propagation X-Git-Tag: v0.9.2~163^2 X-Git-Url: https://git.sagredo.dev/?a=commitdiff_plain;h=01285f12c3ddca4666f5b70163fe3d1ec31a38aa;p=scryer-prolog.git remove no longer needed queue attributes after propagation --- diff --git a/src/lib/clpz.pl b/src/lib/clpz.pl index afc6f8cd..acf4738f 100644 --- a/src/lib/clpz.pl +++ b/src/lib/clpz.pl @@ -3943,10 +3943,7 @@ put_terminating(X, Dom, Ps) --> ) ). -new_queue(queue(Goals,Fast,Slow,_Aux)) :- - put_atts(Goals, +queue([],_)), - put_atts(Fast, +queue([],_)), - put_atts(Slow, +queue([],_)). +new_queue(queue(_Goals,_Fast,_Slow,_Aux)). queue_goal(Goal) --> insert_queue(Goal, 1). queue_fast(Prop) --> insert_queue(Prop, 2). @@ -3955,11 +3952,10 @@ queue_slow(Prop) --> insert_queue(Prop, 3). insert_queue(Element, Which) --> state(Queue), { arg(Which, Queue, Arg), - get_atts(Arg, queue(Head0,Tail0)), - ( Head0 == [] -> - Head = [Element|Tail] - ; Head = Head0, + ( get_atts(Arg, queue(Head0,Tail0)) -> + Head = Head0, Tail0 = [Element|Tail] + ; Head = [Element|Tail] ), put_atts(Arg, +queue(Head,Tail)) }. @@ -4187,11 +4183,15 @@ do_queue --> ; true ). +:- meta_predicate(ignore(0)). + +ignore(Goal) :- ( Goal -> true ; true ). + print_queue --> state(queue(Goal,Fast,Slow,_)), - { get_atts(Goal, +queue(GHs,_)), - get_atts(Fast, +queue(FHs,_)), - get_atts(Slow, +queue(SHs,_)), + { ignore(get_atts(Goal, +queue(GHs,_))), + ignore(get_atts(Fast, +queue(FHs,_))), + ignore(get_atts(Slow, +queue(SHs,_))), format("Current queue:~n goal: ~q~n fast: ~q~n slow: ~q~n~n", [GHs,FHs,SHs]) }. @@ -4208,7 +4208,7 @@ queue_get_arg_(Queue, Which, Element) :- arg(Which, Queue, Arg), get_atts(Arg, +queue([Element|Elements],Tail)), ( var(Elements) -> - put_atts(Arg, +queue([],_)) + put_atts(Arg, -queue(_,_)) ; put_atts(Arg, +queue(Elements,Tail)) ).