Functional Programming with Bananas
I have to say, with a title like Functional Programming with Bananas, Lenses, Envelopes, and Barbed Wire, the actual contents of the paper were a bit disappointing.
Abstract: We develop a calculus for lazy functional programming based on recursion operators associated with data type definitions. For these operators we derive various algebraic laws that are useful in deriving and manipulating programs. We shall show that all example functions in Bird and Wadler’s “Introduction to Functional Programming” can be expressed using these operators.
It is a good paper, however.