Lecture 1
Lecture 2
Lecture 3
Lecture 4
Lecture 5


%% Wrapper: the accumulator is instantiated with the empty list.
mirror(In,Out) :- mirror(In,[],Out).

%% If we reach the empty list, the accumulator should contain the
%% reversed list. Hence, we pass it on to the output argument.

%% Take the head of the list and attach it to the front of the
%% accumulator. This is the accumulator for the recursive call of
%% mirror which will process the tail of the list.
mirror([Head|Tail],Acc,Out) :- mirror(Tail,[Head|Acc],Out).

Back to the exercise.