From: Mark Thom Date: Sat, 6 Feb 2021 05:50:57 +0000 (-0700) Subject: shed module names from arguments of the (->)/2, (,)/2, (;)/2 predicates X-Git-Tag: v0.9.0~150^2~65^2~9 X-Git-Url: https://git.sagredo.dev/?a=commitdiff_plain;h=bdb5df104a5904a041715dd3e53e1338624a5bf1;p=scryer-prolog.git shed module names from arguments of the (->)/2, (,)/2, (;)/2 predicates --- diff --git a/src/lib/builtins.pl b/src/lib/builtins.pl index 2be9c783..588a12fe 100644 --- a/src/lib/builtins.pl +++ b/src/lib/builtins.pl @@ -243,15 +243,26 @@ call_or_cut(G, B, ErrorPI) :- call_or_cut(!, B) :- '$set_cp_by_default'(B). +call_or_cut(_:!, B) :- + '$set_cp_by_default'(B). call_or_cut((G1, G2), B) :- !, '$call_with_default_policy'(','(G1, G2, B)). +call_or_cut(_:(G1, G2), B) :- + !, + '$call_with_default_policy'(','(G1, G2, B)). call_or_cut((G1 ; G2), B) :- !, '$call_with_default_policy'(';'(G1, G2, B)). +call_or_cut(_:(G1 ; G2), B) :- + !, + '$call_with_default_policy'(';'(G1, G2, B)). call_or_cut((G1 -> G2), B) :- !, '$call_with_default_policy'(->(G1, G2, B)). +call_or_cut(_:(G1 -> G2), B) :- + !, + '$call_with_default_policy'(->(G1, G2, B)). call_or_cut(G, _) :- '$call_with_default_policy'(G). @@ -261,14 +272,26 @@ call_or_cut(G, _) :- !, '$call_with_default_policy'(','(G1, G2, B)), '$call_with_default_policy'(call_or_cut(G3, B, (',')/2)). +','(_:(G1, G2), G3, B) :- + !, + '$call_with_default_policy'(','(G1, G2, B)), + '$call_with_default_policy'(call_or_cut(G3, B, (',')/2)). ','((G1; G2), G3, B) :- !, '$call_with_default_policy'(';'(G1, G2, B)), '$call_with_default_policy'(call_or_cut(G3, B, (',')/2)). +','(_:(G1; G2), G3, B) :- + !, + '$call_with_default_policy'(';'(G1, G2, B)), + '$call_with_default_policy'(call_or_cut(G3, B, (',')/2)). ','((G1 -> G2), G3, B) :- !, '$call_with_default_policy'(->(G1, G2, B)), '$call_with_default_policy'(call_or_cut(G3, B, (',')/2)). +','(_:(G1 -> G2), G3, B) :- + !, + '$call_with_default_policy'(->(G1, G2, B)), + '$call_with_default_policy'(call_or_cut(G3, B, (',')/2)). ','(G1, G2, B) :- '$call_with_default_policy'(call_or_cut(G1, B, (',')/2)), '$call_with_default_policy'(call_or_cut(G2, B, (',')/2)). @@ -280,17 +303,33 @@ call_or_cut(G, _) :- ( '$call_with_default_policy'(','(G1, G2, B)) ; '$call_with_default_policy'(call_or_cut(G3, B, (;)/2)) ). +';'(_:(G1, G2), G3, B) :- + !, + ( '$call_with_default_policy'(','(G1, G2, B)) + ; '$call_with_default_policy'(call_or_cut(G3, B, (;)/2)) + ). ';'((G1; G2), G3, B) :- !, ( '$call_with_default_policy'(';'(G1, G2, B)) ; '$call_with_default_policy'(call_or_cut(G3, B, (;)/2)) ). +';'(_:(G1; G2), G3, B) :- + !, + ( '$call_with_default_policy'(';'(G1, G2, B)) + ; '$call_with_default_policy'(call_or_cut(G3, B, (;)/2)) + ). ';'((G1 -> G2), G3, B) :- !, ( '$call_with_default_policy'(call_or_cut(G1, B, (->)/2)) -> '$call_with_default_policy'(call_or_cut(G2, B, (->)/2)) ; '$call_with_default_policy'(call_or_cut(G3, B, (;)/2)) ). +';'(_:(G1 -> G2), G3, B) :- + !, + ( '$call_with_default_policy'(call_or_cut(G1, B, (->)/2)) -> + '$call_with_default_policy'(call_or_cut(G2, B, (->)/2)) + ; '$call_with_default_policy'(call_or_cut(G3, B, (;)/2)) + ). ';'(G1, G2, B) :- ( '$call_with_default_policy'(call_or_cut(G1, B, (;)/2)) ; '$call_with_default_policy'(call_or_cut(G2, B, (;)/2)) @@ -303,16 +342,31 @@ call_or_cut(G, _) :- ( '$call_with_default_policy'(','(G1, G2, B)) -> '$call_with_default_policy'(call_or_cut(G3, B, (->)/2)) ). +->(_:(G1, G2), G3, B) :- + !, + ( '$call_with_default_policy'(','(G1, G2, B)) -> + '$call_with_default_policy'(call_or_cut(G3, B, (->)/2)) + ). ->((G1 ; G2), G3, B) :- !, ( '$call_with_default_policy'(';'(G1, G2, B)) -> '$call_with_default_policy'(call_or_cut(G3, B, (->)/2)) ). +->(_:(G1 ; G2), G3, B) :- + !, + ( '$call_with_default_policy'(';'(G1, G2, B)) -> + '$call_with_default_policy'(call_or_cut(G3, B, (->)/2)) + ). ->((G1 -> G2), G3, B) :- !, ( '$call_with_default_policy'(->(G1, G2, B)) -> '$call_with_default_policy'(call_or_cut(G3, B, (->)/2)) ). +->(_:(G1 -> G2), G3, B) :- + !, + ( '$call_with_default_policy'(->(G1, G2, B)) -> + '$call_with_default_policy'(call_or_cut(G3, B, (->)/2)) + ). ->(G1, G2, B) :- ( '$call_with_default_policy'(call_or_cut(G1, B, (->)/2)) -> '$call_with_default_policy'(call_or_cut(G2, B, (->)/2)) diff --git a/src/loader.pl b/src/loader.pl index 2f5f70ff..0ac97ac6 100644 --- a/src/loader.pl +++ b/src/loader.pl @@ -398,16 +398,16 @@ predicate_property(Callable, Property) :- ). -strip_module_(M0, G0, M1, G1) :- +strip_module(M0, G0, M1, G1) :- ( nonvar(G0), G0 = (MG1:G2) -> - strip_module_(MG1, G2, M1, G1) + strip_module(MG1, G2, M1, G1) ; M0 = M1, G0 = G1 ). -strip_module(Goal, M, G) :- - strip_module_(_, Goal, M, G). +strip_module(Goal, M, G) :- + strip_module(_, Goal, M, G). expand_subgoal(UnexpandedGoals, MS, Module, ExpandedGoals, HeadVars) :-