Fold (higher-order Function)

Fold (higher-order Function)

In functional programming, fold – also known variously as reduce, accumulate, compress, or inject – are a family of higher-order functions that analyze a recursive data structure and recombine through use of a given combining operation the results of recursively processing its constituent parts, building up a return value. Typically, a fold is presented with a combining function, a top node of a data structure, and possibly some default values to be used under certain conditions. The fold then proceeds to combine elements of the data structure's hierarchy, using the function in a systematic way.

Folds are in a sense dual to unfolds, which take a "seed" value and apply a function corecursively to decide how to progressively construct a corecursive data structure, whereas a fold recursively breaks that structure down, replacing it with the results of applying a combining function at each node on its terminal values and the recursive results (catamorphism as opposed to anamorphism of unfolds).

Read more about Fold (higher-order Function):  Folds As Structural Transformations, Folds On Lists, Folds in Various Languages, Universality

Famous quotes containing the word fold:

    I mourn the safe and motherly old middle-class queen, who held the nation warm under the fold of her big, hideous Scotch-plaid shawl and whose duration had been so extraordinarily convenient and beneficent. I felt her death much more than I should have expected; she was a sustaining symbol—and the wild waters are upon us now.
    Henry James (1843–1916)