Разница между fold и reduce?

Пытаюсь изучить F#, но запутался, пытаясь отличить fold от reduce. Fold вроде бы делает то же самое, но принимает дополнительный параметр. Есть ли законная причина для существования этих двух функций или они существуют для того, чтобы удовлетворить потребности людей с разным опытом? (Например: String и string в C#)

Вот фрагмент кода, скопированный из примера:

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])

115
задан xji 9 January 2018 в 00:57
поделиться