Fold
Em programação funcional, fold (também conhecido como reduce, accumulate, aggregate, compress ou inject) refere-se a uma família de funções de ordem superior que analisa uma estrutura de dados recursiva e, por meio do uso de uma determinada função de combinação, reconstrói os valores retornados da análise recursiva em um valor de retorno.