From 1dbadbfc3571cf777a67a02acac204c233f845ee Mon Sep 17 00:00:00 2001 From: Markus Triska Date: Thu, 30 Apr 2020 23:09:15 +0200 Subject: [PATCH] =?utf8?q?enable=20goal=20expansion=20for=20CLP(=E2=84=A4)?= =?utf8?q?=20goals?= MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit Example: integer_successor(I0, I) :- I #= I0 + 1. Yielding: ?- listing(integer_successor/2). integer_successor(A,B) :- ( integer(B) -> ( integer(A) -> B=:=A+1 ; C is B, clpz:clpz_equal(C,A+1) ) ; ( integer(A) -> ( var(B) -> B is A+1 ; C is A+1, clpz:clpz_equal(B,C) ) ; clpz:clpz_equal(B,A+1) ) ). Thus, fast low-level arithmetic is used whenever possible. --- src/prolog/lib/clpz.pl | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/prolog/lib/clpz.pl b/src/prolog/lib/clpz.pl index 0937d538..4725955b 100644 --- a/src/prolog/lib/clpz.pl +++ b/src/prolog/lib/clpz.pl @@ -3064,7 +3064,7 @@ is_false(var(X)) :- nonvar(X). :- dynamic(goal_expansion/1). -goal_expansion(Goal0, _Layout1, _Module, Goal, []) :- +user:goal_expansion(Goal0, Goal) :- \+ goal_expansion(false), clpz_expandable(Goal0), clpz_expansion(Goal0, Goal). -- 2.54.0