diff options
author | Shawn O. Pearce <sop@google.com> | 2011-06-06 09:30:15 -0700 |
---|---|---|
committer | Shawn O. Pearce <sop@google.com> | 2011-06-06 09:48:59 -0700 |
commit | cb88682c9b8307063487d4b5225623e6b8002211 (patch) | |
tree | fc6f938ac92823e830de6cccc470df3b3831e775 | |
parent | 2c79eeb3b3f624be5df13f4af2eed852bdc31886 (diff) | |
download | prolog-cafe-cb88682c9b8307063487d4b5225623e6b8002211.tar.gz |
Define builtin reverse/2
-rw-r--r-- | src/builtin/builtins.pl | 11 |
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). |