Hutton, Graham, "A Tutorial on the Universality and Expressiveness of Fold", Journal of Functional Programming, 1999