Próbuje dowiedzieć się F #, ale irytować, gdy próbuje odróżnić krotnie i zmniejszyć . Fold wydaje się robić to samo, ale ma dodatkowy parametr. Czy istnieje uzasadniony powód, dla którego te dwie funkcje istnieją, czy też mają one służyć osobom z różnych środowisk? (Np .: ciąg i ciąg w C #)
Oto fragment kodu skopiowany z przykładu:
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
w kategoriach reduce
jest bardziej skomplikowana - rodzaj akumulatora fold
nie musi być taki sam jak typ rzeczy na liście!
fold f a l
Można zapisać jakoreduce f a::l
.