У меня есть простая проблема, и, поскольку я новичок в F #, я не могу понять, как это сделать.У меня есть список кортежей:
let l = [ (a, 2); (b, 3); (c, 2); (d, 6) ]
, которые я хочу преобразовать в это:
let r = [ (a, 2); (b, 5); (c, 7); (d, 13) ]
Это просто добавляет значения второго элемента в каждом кортеже: 2 + 3 + 2 + 6
.Объекты a
, b
, c
и d
являются сложными объектами, которые я просто хочу сохранить.
Я подумал, что для этого следует использовать List.scan
.Он берет список, пропускает накопитель через вычисления и возвращает список:
let r = l |> List.scan (fun (_, s) (o, i) -> (o, s + i)) (??, 0) |> List.tail
Но я не знаю, что заполнять для вопросительных знаков.Меня не интересует начальное состояние, кроме 0
.И я не хочу указывать какой-то «пустой» экземпляр первого элемента кортежа.
Или есть более простой способ сделать это?