分配集转换器(partition-all)的文档提及,当一个集合(coll)未被提供时,它会返回一个转换器(transducer)。这在(partition-all n)的形式下是正确的,但在(partition-all n step)下则不正确。我并没有看到清晰的方法可以结合核心中的转换器以生成这种类型的“滑动窗口”转换器,即
user=> (into (link: ) (partition-all 2 1) (link: 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)
将这样的功能加入核心模块是否合理?
(link: 1): [链接](https://docs.clojure.org/clojure.core/partition-all)