From: notoria Date: Sat, 30 Jan 2021 16:45:55 +0000 (+0100) Subject: Removed redundant choicepoint from between/3 X-Git-Tag: v0.9.0~157^2 X-Git-Url: https://git.sagredo.dev/?a=commitdiff_plain;h=dfd7ac633acf72c9d2c9912e1a96e99ac1699678;p=scryer-prolog.git Removed redundant choicepoint from between/3 --- diff --git a/src/lib/between.pl b/src/lib/between.pl index 4ce92db7..5a0d5bab 100644 --- a/src/lib/between.pl +++ b/src/lib/between.pl @@ -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) :-