flatten the instruction dispatch loop
This commit is contained in:
@@ -12,9 +12,7 @@ between(Lower, Upper, X) :-
|
||||
( nonvar(X) ->
|
||||
Lower =< X,
|
||||
X =< Upper
|
||||
; % compare(Ord, Lower, Upper),
|
||||
% between_(Ord, Lower, Upper, X)
|
||||
Lower =< Upper,
|
||||
; Lower =< Upper,
|
||||
between_(Lower, Upper, X)
|
||||
).
|
||||
|
||||
@@ -27,16 +25,6 @@ between_(Lower, Upper, Lower1) :-
|
||||
)
|
||||
).
|
||||
|
||||
/*
|
||||
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) :-
|
||||
I1 is I0 + 1,
|
||||
|
||||
@@ -59,15 +59,13 @@ call(G, A, B, C, D, E, F, G) :- '$call'(G, A, B, C, D, E, F, G).
|
||||
|
||||
call(G, A, B, C, D, E, F, G, H) :- '$call'(G, A, B, C, D, E, F, G, H).
|
||||
|
||||
% dynamic module resolution.
|
||||
|
||||
Module : Predicate :-
|
||||
( atom(Module) -> '$module_call'(Module, Predicate)
|
||||
; throw(error(type_error(atom, Module), (:)/2))
|
||||
).
|
||||
|
||||
|
||||
% dynamic module resolution.
|
||||
|
||||
:(Module, Predicate, A1) :-
|
||||
( atom(Module) ->
|
||||
'$module_call'(A1, Module, Predicate)
|
||||
|
||||
@@ -56,13 +56,16 @@ length(Xs, N) :-
|
||||
!,
|
||||
'$skip_max_list'(M, -1, Xs, Xs0),
|
||||
( Xs0 == [] -> N = M
|
||||
; var(Xs0) -> length_addendum(Xs0, N, M)).
|
||||
; var(Xs0) -> length_addendum(Xs0, N, M)
|
||||
).
|
||||
length(Xs, N) :-
|
||||
integer(N),
|
||||
N >= 0, !,
|
||||
N >= 0,
|
||||
!,
|
||||
'$skip_max_list'(M, N, Xs, Xs0),
|
||||
( Xs0 == [] -> N = M
|
||||
; var(Xs0) -> R is N-M, length_rundown(Xs0, R)).
|
||||
; var(Xs0) -> R is N-M, length_rundown(Xs0, R)
|
||||
).
|
||||
length(_, N) :-
|
||||
integer(N), !,
|
||||
domain_error(not_less_than_zero, N, length/2).
|
||||
|
||||
Reference in New Issue
Block a user