Если под безопасностью вы подразумеваете «безопаснее» - тогда, я думаю, это чем-то объяснит. Для начала, если вы суммируете список, fold
должен быть несколько безопаснее, так как избавляет программиста от необходимости правильно индексировать список:
let sum lst =
let mutable s = 0
for i=0 to (List.length lst - 1) do
s <- s + lst.[i]
s
Вы полностью избегаете многих ловушек, используя библиотечную функцию:
let sum lst =
let folder acc element =
acc + element
List.fold folder 0 lst
Сгиб обрабатывает все крайние случаи для вас, с точки зрения индексов и длины списка. (примечание: это также может быть сделано с List.reduce (+) lst
, однако, не обрабатывает пустой список, как это делает сгиб).
Короче говоря, он сохраняет программист не допускает ошибок в математике глупых индексов и постоянно сосредотачивает внимание на реальных логиках c того, что делается.
РЕДАКТИРОВАТЬ: я иронично испортил логики индекса c в своем первоначальном посте