## A Tutorial on the Universality and Expressiveness of Fold (1993)

### Cached

### Download Links

- [www.cs.nott.ac.uk]
- [www.cs.nott.ac.uk]
- [www.cs.nott.ac.uk]
- [www.cs.nott.ac.uk]
- [www.cs.nott.ac.uk]
- DBLP

### Other Repositories/Bibliography

Venue: | Journal of Functional Programming |

Citations: | 58 - 12 self |

### BibTeX

@ARTICLE{Hutton93atutorial,

author = {Graham Hutton},

title = {A Tutorial on the Universality and Expressiveness of Fold},

journal = {Journal of Functional Programming},

year = {1993},

volume = {9},

pages = {355--372}

}

### Years of Citing Articles

### OpenURL

### Abstract

In functional programming, fold is a standard operator that encapsulates a simple pattern of recursion for processing lists. This article is a tutorial on two key aspects of the fold operator for lists. First of all, we emphasize the use of the universal property of fold both as a proof principle that avoids the need for inductive proofs, and as a definition principle that guides the transformation of recursive functions into definitions using fold. Secondly, we show that even though the pattern of recursion encapsulated by fold is simple, in a language with tuples and functions as first-class values the fold operator has greater expressive power than might first be expected. 1 Introduction Many programs that involve repetition are naturally expressed using some form of recursion, and properties proved of such programs using some form of induction. Indeed, in the functional approach to programming, recursion and induction are the primary tools for defining and proving properties of p...