【发布时间】:2011-11-24 22:05:10
【问题描述】:
将序列切割成固定长度的批次,制作重叠的滑动数据窗口,从序列中获取每个第 n 个项目 - 所有这些任务都可以使用单个通用切片函数来解决。例如,Clojure 为此类目的提供了partition size skiplibrary function。
F# 核心库提供Seq.windowed function 实现滑动窗口重叠1。Seq.windowed width 将简单地等同于partition width 1;改变 partition 参数可以解决其他问题:partition size size 将序列分割成不重叠的批次,partition 1 n 获取每个第 n 个序列项,等等。
在 F# 中实现这样的功能并不难。我曾经发布过遭受冗余序列评估的a naive prototype;但是,将其变成真正的懒惰生产质量 F# 实现绝对是可行的。
我想知道是否有任何特殊原因将用于序列切片的开箱即用 F# 核心库产品仅限于 Seq.windowed 函数?
【问题讨论】:
-
我认为这是stackoverflow.com/questions/7509863/…的后续行动
-
FSharpx 是填补这些空白的地方 github.com/fsharp/fsharpx ,想要贡献吗?
-
@Mauricio:谢谢你让我知道。我很快就会考虑在那里做出贡献。
标签: algorithm f# functional-programming