Reversing a List in Prolog

Your solution explained: If we reverse the empty list, we obtain the empty list. If we reverse the list [H|T] , we end up with the list obtained by reversing T and concatenating with [H] . To see that the recursive clause is correct, consider the list [a,b,c,d] . If we reverse the tail of this list we obtain [d,c,b] . Concatenating this with [a] yields [d,c,b,a] , which is the reverse of [a,b,c,d]

Another reverse solution:


 reverse([H|T],Z,Acc) :- reverse(T,Z,[H|Acc]).


?- reverse([a,b,c],X,[]).

For further information please read:

Leave a Comment