A tutorial on the universality and expressiveness of fold

  • Authors:
  • Graham Hutton

  • Affiliations:
  • University of Nottingham, Nottingham, UK/ http:F/F/www.cs.nott.ac.ukF/-gmh

  • Venue:
  • Journal of Functional Programming
  • Year:
  • 1999

Quantified Score

Hi-index 0.00

Visualization

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.