From: Mark Thom Date: Sun, 24 Feb 2019 22:15:00 +0000 (-0700) Subject: make better use of can_be in between library X-Git-Tag: v0.8.110~225 X-Git-Url: https://git.sagredo.dev/?a=commitdiff_plain;h=7f8c6eb3f5e862ce3d2a8e5b5a0825dc03ebf0d5;p=scryer-prolog.git make better use of can_be in between library --- diff --git a/src/prolog/lib/between.pl b/src/prolog/lib/between.pl index 78aaf26f..60c2a99a 100644 --- a/src/prolog/lib/between.pl +++ b/src/prolog/lib/between.pl @@ -18,11 +18,10 @@ enumerate_nats(I0, N) :- enumerate_nats(I1, N). gen_nat(N) :- - integer(N), !, N >= 0. -gen_nat(N) :- - var(N), !, enumerate_nats(0, N). -gen_nat(N) :- - throw(error(type_error(integer, N), gen_nat/1)). + can_be(integer, N), + ( var(N) -> enumerate_nats(0, N) + ; true + ). enumerate_ints(I, I). enumerate_ints(I0, N) :- @@ -33,11 +32,10 @@ enumerate_ints(I0, N) :- enumerate_ints(I1, N). gen_int(N) :- - integer(N), !. -gen_int(N) :- - var(N), !, enumerate_ints(0, N). -gen_int(N) :- - throw(error(type_error(integer, N), gen_int/1)). + can_be(integer, N), + ( var(N) -> enumerate_ints(0, N) + ; true + ). repeat_integer(N) :- N > 0.