aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorShawn O. Pearce <sop@google.com>2011-06-06 09:30:15 -0700
committerShawn O. Pearce <sop@google.com>2011-06-06 09:48:59 -0700
commitcb88682c9b8307063487d4b5225623e6b8002211 (patch)
treefc6f938ac92823e830de6cccc470df3b3831e775
parent2c79eeb3b3f624be5df13f4af2eed852bdc31886 (diff)
downloadprolog-cafe-cb88682c9b8307063487d4b5225623e6b8002211.tar.gz
Define builtin reverse/2
-rw-r--r--src/builtin/builtins.pl11
1 files changed, 6 insertions, 5 deletions
diff --git a/src/builtin/builtins.pl b/src/builtin/builtins.pl
index d97985c..db3f695 100644
--- a/src/builtin/builtins.pl
+++ b/src/builtin/builtins.pl
@@ -706,7 +706,7 @@ findall(Template, Goal, Instances) :-
fail.
'$findall'(H, _, _, Instances) :-
hash_get(H, '$FINDALL', Vs),
- '$builtin_reverse'(Vs, Instances).
+ reverse(Vs, Instances).
% bagof/3 & setof/3
bagof(Template, Goal, Instances) :- callable(Goal), !,
@@ -2361,10 +2361,15 @@ listing(T) :- illarg(type(predicate_indicator), listing(T), 1).
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% Misc
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+:- public reverse/2.
:- public length/2.
:- public numbervars/3.
:- public statistics/2.
+reverse(Xs, Zs) :- reverse(Xs, [], Zs).
+reverse([], Zs, Zs).
+reverse([X|Xs], Tmp, Zs) :- reverse(Xs, [X|Tmp], Zs).
+
length(L, N) :- var(N), !, '$length'(L, 0, N).
length(L, N) :- '$length0'(L, 0, N).
@@ -2576,10 +2581,6 @@ illarg(Msg, _, _) :- raise_exception(Msg).
'$builtin_member'(X, [X|_]).
'$builtin_member'(X, [_|L]) :- '$builtin_member'(X, L).
-'$builtin_reverse'(Xs, Zs) :- '$builtin_reverse'(Xs, [], Zs).
-'$builtin_reverse'([], Zs, Zs).
-'$builtin_reverse'([X|Xs], Ys, Zs) :- '$builtin_reverse'(Xs, [X|Ys], Zs).
-
'$builtin_message'([]) :- !.
'$builtin_message'([M]) :- !, write(M).
'$builtin_message'([M|Ms]) :- write(M), '$fast_write'(' '), '$builtin_message'(Ms).