In
functional programming,
fold – also known variously as
reduce,
accumulate,
aggregate,
compress, or
inject – refers to a family of
higher-order functions that
analyze a
recursive data structure and through use of a given combining operation, recombine 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.