在F#中使用array.fold的累积和

İre*_*ten 3 f#

我有一个以下类型的数组

let myarray = [| 1 .. 5 |]
Run Code Online (Sandbox Code Playgroud)

我想得到另一个数组,其中每个元素是前面的元素的累积总和:

let mycumarray = [| 1 3 6.. 15 |]
Run Code Online (Sandbox Code Playgroud)

我试图做的是:

let sumArray array = Array.fold (fun acc elem -> acc + elem) 0.0 array
let mycumarray = sumArray myarray
Run Code Online (Sandbox Code Playgroud)

但它不起作用.有没有人有任何建议来获得累积金额?

Van*_*oiy 6

我认为你正在寻找Array.scan,它非常相似Array.fold,但返回所有状态值而不是最后一个:

(Array.scan (+) 0 myArray).[1..]
Run Code Online (Sandbox Code Playgroud)

.[1..]是ARRAY切片机符号(请参阅MSDN在F#阵列),因为丢弃的第一个元素,这是必要scan在输出中包括的初始状态.