Интересно, есть ли какая-нибудь функция в библиотеках F #, подобная этой?
let map_acc (f:int->int) (list:int list) =
let rec map_acc' f acc = function
| [] -> []
| h::t -> (f (h+acc))::(map_acc' f (h+acc) t)
map_acc' f 0 list
Использование:
let xxx = map_acc id [1..10]
val xxx : int list = [1; 3; 6; 10; 15; 21; 28; 36; 45; 55]
Ее назначение очень похоже на map
но оно передает текущее состояние (в данном случае, аккумулятор) каждому элементу списка.