Der Versuch, F # zu lernen, war jedoch verwirrt, als er versuchte, zwischen Falten und Reduzieren zu unterscheiden . Fold scheint dasselbe zu tun , benötigt jedoch einen zusätzlichen Parameter. Gibt es einen legitimen Grund für die Existenz dieser beiden Funktionen oder sind sie dazu da, Menschen mit unterschiedlichem Hintergrund aufzunehmen? (ZB: String und String in C #)
Hier ist ein Code-Snippet, das aus dem Beispiel kopiert wurde:
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 Bezug auf reduce
ist komplizierter als das - die Art des Akkumulators von fold
muss nicht mit der Art der Dinge in der Liste übereinstimmen !
fold f a l
kann als geschrieben werdenreduce f a::l
.