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 symboland the wild waters are upon us now.”
—Henry James (18431916)