From: Mark Thom Date: Sun, 3 Mar 2019 09:50:49 +0000 (-0700) Subject: improve reverse/2 X-Git-Tag: v0.8.110~217 X-Git-Url: https://git.sagredo.dev/?a=commitdiff_plain;h=74521a93d3e0e7e39a6bd6fa82932709746e3e3a;p=scryer-prolog.git improve reverse/2 --- diff --git a/src/prolog/lib/lists.pl b/src/prolog/lib/lists.pl index 078b9674..e96d677d 100644 --- a/src/prolog/lib/lists.pl +++ b/src/prolog/lib/lists.pl @@ -41,11 +41,11 @@ append([X|L], R, [X|S]) :- append(L, R, S). memberchk(X, Xs) :- member(X, Xs), !. -reverse(Xs, Ys) :- reverse(Xs, [], Ys). +reverse(Xs, Ys) :- reverse(Xs, Ys, [], [], Xs). -reverse([], Ys, Ys). -reverse([H|T], Ps, Rs) :- - reverse(T, [H|Ps], Rs). +reverse([], [], XsRev, YsRev, YsRev). +reverse([X1|Xs], [Y1|Ys], XsPreludeRev, YsPreludeRev, Xss) :- + reverse(Xs, Ys, [X1|XsPreludeRev], [Y1|YsPreludeRev], Xss). maplist(_, []). maplist(Cont1, [E1|E1s]) :- @@ -86,4 +86,3 @@ maplist(_, [], [], [], [], [], [], [], []). maplist(Cont, [E1|E1s], [E2|E2s], [E3|E3s], [E4|E4s], [E5|E5s], [E6|E6s], [E7|E7s], [E8|E8s]) :- call(Cont, E1, E2, E3, E4, E5, E6, E7), maplist(Cont, E1s, E2s, E3s, E4s, E5s, E6s, E7s, E8s). -