]> Repositorios git - scryer-prolog.git/commitdiff
Removed redundant choicepoint from between/3
authornotoria <[email protected]>
Sat, 30 Jan 2021 16:45:55 +0000 (17:45 +0100)
committernotoria <[email protected]>
Sat, 30 Jan 2021 16:45:55 +0000 (17:45 +0100)
src/lib/between.pl

index 4ce92db7c27d6448e30d2256fc15661b71bffa87..5a0d5babea1115b264e713dd6908e03695527c5b 100644 (file)
@@ -12,15 +12,17 @@ between(Lower, Upper, X) :-
     (   nonvar(X) ->
         Lower =< X,
         X =< Upper
-    ;   between_(Lower, Upper, X)
+    ;   compare(Ord, Lower, Upper),
+        between_(Ord, Lower, Upper, X)
     ).
 
-between_(Lower, Upper, Lower) :-
-    Lower =< Upper.
-between_(Lower1, Upper, X) :-
-    Lower1 < Upper,
-    Lower2 is Lower1 + 1,
-    between_(Lower2, Upper, X).
+between_(<, Lower0, Upper, X) :-
+    (   X = Lower0
+    ;   Lower1 is Lower0 + 1,
+        compare(Ord, Lower1, Upper),
+        between_(Ord, Lower1, Upper, X)
+    ).
+between_(=, Upper, Upper, Upper).
 
 enumerate_nats(I, I).
 enumerate_nats(I0, N) :-