Essayer d'apprendre F # mais être confus en essayant de faire la distinction entre plier et réduire . Fold semble faire la même chose mais prend un paramètre supplémentaire. Existe-t-il une raison légitime pour que ces deux fonctions existent ou sont-elles là pour accueillir des personnes d'horizons différents? (Par exemple: chaîne et chaîne en C #)
Voici un extrait de code copié à partir de l'exemple:
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
en œuvre en termes de reduce
est plus compliquée que cela - le type d'accumulateur de fold
n'a pas besoin d'être le même que le type de choses dans la liste!
fold f a l
peut être écrit commereduce f a::l
.