reverse(List, Reversed) :- rev2(List, [], Reversed).

rev2([], Acc, Acc).
rev2([X|Xs], Acc, Reversed) :- rev2(Xs, [X|Acc], Reversed).
