reverse/2 is Prolog predicate ?- reverse([a,b,c],L). L=[c,b,a] ?- my_reverse([m,e,l,a,n,i,e],R). R = [e,i,n,a,l,e,m] ?- my_reverse([a,[b,1],c],R). R = [c,[b,1],a]
my_reverse([],[]). my_reverse([H|T],L):- my_reverse(T,R),append(R,[H],L).
my_reverse/2 written with the technique of the collector variable my_reverse(L1,R):- rev(L1,[],R). rev([],L,L). rev([H|T],L,M):- rev(T,[H|L],M).