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.