关于 partition-all 的文档(链接:1)指出,如果不提供 coll,则返回一个转换器。这对于形式(partition-all n)来说是正确的,但对于(partition-all n step)来说则是不正确的。我没有看出有明确的方式来组合核心中的转换器以产生这种“滑动窗口”转换器,例如。
user=> (into (链接: ) (partition-all 2 1) (链接:1 2 3 4 5))
((1 2) (2 3) (3 4) (4 5) (5))
当然,上述假设的(partition-all n step)与非转换器生成的具体形式(partition-all n coll)之间存在参数数量冲突,这可能通过对第二个参数的类型进行切换来解决,或者通过提供一个单独的函数中的功能来实现,例如(sliding window-size step-size),或者通过其他方式。
我在这里参考现有的(partition-all n)转换器实现了这个函数:https://gist.github.com/nornagon/03b85fbc22b3613087f6
将类似的东西集成到核心中是否合理?
(链接:1):https://docs.clojure.org/clojure.core/partition-all