FoldFold, anche conosciuta come reduce, accumulate, compress o inject, nella programmazione funzionale è una funzione che itera una funzione arbitraria su una struttura dati in un certo ordine e costruisce un valore di ritorno. Tipicamente una fold, dialoga con due cose: una funzione combinante e una lista di elementi di una struttura dati. La fold poi procede a combinare elementi della struttura dati usando la funzione in modo sistematico. Le due principali tipologie di fold sono foldr e foldl, dove 'r' ed 'l' stanno, rispettivamente, per 'right' e 'left'. DefinizioneHaskellIn Haskell è così definita:
dove f è una funzione binaria di tipo (a -> b -> b), mentre invece foldl è definita come
CAMLIn CAML, foldr è definibile come:
Un esempio, sempre in CAML, di utilizzo della funzione foldr è il seguente: Si vuole suddividere una lista in due liste, una contenente tutti gli elementi maggiori di un certo n, l'altra contenente gli elementi minori o uguali a n.
Segue l'output sulla lista
Voci correlate |