From 672979c515703ad5c2aa2ef18b1c2451ced512a9 Mon Sep 17 00:00:00 2001 From: Markus Triska Date: Fri, 8 Sep 2023 22:40:50 +0200 Subject: [PATCH] shorter include/3 and exclude/3, relying on improved indexing --- src/lib/clpb.pl | 32 ++++++++++++-------------------- 1 file changed, 12 insertions(+), 20 deletions(-) diff --git a/src/lib/clpb.pl b/src/lib/clpb.pl index fdf1cfce..311d6115 100644 --- a/src/lib/clpb.pl +++ b/src/lib/clpb.pl @@ -1949,29 +1949,21 @@ Compatibility predicates. - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */ -include(Goal, List, Is) :- - include_(List, Goal, Is). - -include_([], _, []). -include_([X1|Xs1], P, Is) :- - ( call(P, X1) - -> Is = [X1|Is1] - ; Is = Is1 +include(_, [], []). +include(Goal, [L|Ls0], Ls) :- + ( call(Goal, L) -> + Ls = [L|Rest] + ; Ls = Rest ), - include_(Xs1, P, Is1). + include(Goal, Ls0, Rest). - -exclude(Goal, List, Is) :- - exclude_(List, Goal, Is). - -exclude_([], _, []). -exclude_([X1|Xs1], P, Is) :- - ( call(P, X1) - -> Is = Is1 - ; Is = [X1|Is1] +exclude(_, [], []). +exclude(Goal, [L|Ls0], Ls) :- + ( call(Goal, L) -> + Ls = Rest + ; Ls = [L|Rest] ), - exclude_(Xs1, P, Is1). - + exclude(Goal, Ls0, Rest). partition(Pred, List, Less, Equal, Greater) :- partition_(List, Pred, Less, Equal, Greater). -- 2.54.0