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

标签 f#

我有以下类型的数组

let myarray = [| 1 .. 5 |]

我想得到另一个数组,其中每个元素都是它之前的元素的累积总和:
let mycumarray = [| 1 3 6.. 15 |]

我试图做的是:
let sumArray array = Array.fold (fun acc elem -> acc + elem) 0.0 array
let mycumarray = sumArray myarray

但是它不起作用。有人对获得累计金额有什么建议吗?

最佳答案

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

(Array.scan (+) 0 myArray).[1..]
.[1..]是数组切片器符号( see the MSDN on arrays in F# )来删除第一个元素,这是必要的,因为 scan在输出中包含初始状态。

关于f# - 在 F# 中使用 array.fold 的累积总和,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30004927/

相关文章:

f# - 如何在可区分的联合中使用符号/标点符号

algorithm - F# 将列表转换为树

.net - 如何获取数组中元素的大小?

c# - 将天数转换为人类可读的持续时间文本

postgresql - F# SQLProvider 列顺序与表中的顺序不匹配

f# - 将元组数组转换为二维数组

f# - 当带有 seq 类型参数的函数是记录字段时,它将不再接受列表或数组

f# - 整理我的相互递归类型

c# - 高效地更新 .NET 字典中的绑定(bind)

f# - 为什么 'printf "%A"None' 输出 null