Accumulators for List Processing
l
reverse(L) = reverse(L, [ ]);

reverse([ ], A) => A;


reverse([E | L], A) => reverse(L, [E | A]);

initial accumulation
final accumulation
intermediate accumulation