This package allows data types to be seen and manipulated as fixpoints of
their underlying functors. It is mostly based on
"Functional
Programming with Bananas, Lenses, Envelopes and Barbed Wire" by Erik
Meijer, Maarten Fokkinga and Ross Paterson.
It makes essential use of associated types and related extensions.