One well known algorithm is the Fast Fourier Transform (FFT). An efficient iterative version
of the FFT algorithm performs as a first step a bit-reversal permutation of the input list. The
bit-reversal permutation swaps elements whose indices have binary representations that are
the reverse of each other. Using an amortized approach, this operation can be made to run
in linear time on a random-access machine. An intriguing question is whether a linear-time
implementation is also feasible on a pointer machine, that is, in a purely functional setting. We
show that the answer to this question is in the affirmative. In deriving a solution, we employ
several advanced programming language concepts such as nested datatypes, associated fold
and unfold operators, rank-2 types and polymorphic recursion.