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:

    Here I pause in my sojourning, giving thanks for having come,
    come to trust, at every turning, God will guide me safely home.
    Jesus sought me when a stranger, wandering from the fold of God,
    Came to rescue me from danger, precious presence, precious blood.
    Robert Robinson (1735–1790)