Я запускаю List.scan по очень большому списку, чтобы вычислить текущую сумму. Когда я закончил, мне понадобится сумма в дополнение к выводу сканирования, чтобы разбить список неравномерно. Общее количество в последнем состоянии выводится путем сканирования, и мне бы очень хотелось избежать дополнительного обхода списка, чтобы получить конечное состояние. Единственный способ, с помощью которого я могу это сделать, - передать изменчивую ссылку, чтобы скопить итог. Есть ли лучший способ приблизиться к этому?F #: Эффективно получить последнее состояние из List.scan
let l = <very large list of int64>
let runningTotal=List.scan (fun s x -> x+s) 0L l
let total= <last element of runningTotal- very inefficient>
doSomething total runningTotal
Спасибо, я предпочитаю это решение, потому что оно более чистое, чем использование ссылки. Я согласен, однако, что Джон, вероятно, быстрее. –