In functionele programmeertalen is een fold (of reduce) een hogere-ordefunctie waarmee een recursieve datastructuur geanalyseerd kan worden. In veel gevallen wordt een lijst in een bepaalde volgorde doorlopen en wordt gaandeweg een bepaalde waarde berekend. Een fold maakt gebruik van twee zaken: een functie die elementen van de datastructuur combineert en de datastructuur zelf. Een voorbeeld:
fold (+) [1,2,3,4,5]
wat resulteert in 1 + 2 + 3 + 4 + 5 = 15. In dit voorbeeld is '+' een associatieve operatie waardoor het irrelevant is hoe de haakjes geplaatst worden. Als benadering van de werking van fold zou men de komma's in de lijst kunnen vervangen door de meegegeven functie.