Cercando di imparare F # ma mi sono confuso quando ho provato a distinguere tra piega e riduzione . Fold sembra fare la stessa cosa ma richiede un parametro in più. C'è una ragione legittima per l'esistenza di queste due funzioni o sono lì per accogliere persone con background diversi? (Ad esempio: stringa e stringa in C #)
Ecco uno snippet di codice copiato dall'esempio:
let sumAList list =
List.reduce (fun acc elem -> acc + elem) list
let sumAFoldingList list =
List.fold (fun acc elem -> acc + elem) 0 list
printfn "Are these two the same? %A "
(sumAList [2; 4; 10] = sumAFoldingList [2; 4; 10])
fold
in termini di reduce
è più complicata di così - il tipo di accumulatore di fold
non deve essere lo stesso del tipo di cose nell'elenco!
fold f a l
può essere scritto comereduce f a::l
.