【问题标题】:Why F# core library does not offer a generic sequence slicing function?为什么 F# 核心库不提供通用序列切片功能?
【发布时间】: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 函数?

【问题讨论】:

标签: algorithm f# functional-programming


【解决方案1】:

我认为你的问题没有什么好的答案。

当然没有技术上的困难会导致无法实现更通用的滑动窗口功能。它可以实现并且很有用。为什么它不包含在 F# 核心库中?可能是因为 F# 团队没有尝试包含所有可能有用的函数,因为这会使核心库太大、太难维护和更难使用(如果函数太多,很难找到合适的函数)。

【讨论】:

    猜你喜欢
    • 2018-12-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-02-14
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多