Functional Programming with Bananas, Lenses, Envelopes and Barbed Wire (1991) [pdf]
eprints.eemcs.utwente.nl
eprints.eemcs.utwente.nl
> We develop a calculus for lazy functional programming based on recursion operators associated with data type definitions.
> For these algebraic operators we derive various algebraic laws that are useful in deriving and manipulating programs.
> We shall show that all example functions in Bill & Wadler's "Introduction to Functional Programming" can be expressed in these operators.
Is this the beginning of Haskell?
It's worth saying that this paper isn't really about introducing new concepts. Instead this is about creating a new vocabulary in the form of a calculus for the construction of recursive functions.