Fold_(高階函數)

在函數式編程中 ， 摺疊 （ fold ） ， 也稱爲歸約 （ reduce ） 、 積累 （ accumulate ） 、 聚集 （ aggregate ） 、 壓縮 （ compress ） 或注入 （ inject ） ， 指稱一組高階函數 ， 它們分析遞歸數據結構並通過使用給定組合運算 ， 將遞歸的處理它的構成部件 、 建造一個返回值的結果重組起來 。 典型的 ， 要向摺疊提供一個組合函數 ， 一個數據結構的頂端 ， 和可能的在特定條件下使用的某些缺省值 。 摺疊接着以系統性方式使用這個函數 ， 進行組合這個數據結構的層級中的元素 。 摺疊在某種意義上是 （ unfold ） 的對偶 ， 它接受一個種子值並共遞歸的應用一個函數 ， 來確定如何進一步的構造一個共遞歸的數據結構 。 摺疊遞歸的分解這個數據結構 ， 在每個節點應用一個組合函數於它的終結值和遞歸結果之上 ， 用得到這個結果替代它 。 摺疊是 ， 而展開是 。