开发者

Why F# core library does not offer a generic sequence slicing function?

Cutting sequence into batches of fixed length, making overlapping sliding data windows, getting each n-th item from a sequence - all these tasks can be solved using a single generic slicing function. For example, Clojure offers for such purposes partition size skiplibrary function.

F# core library offers Seq.windowed function that implements sliding windows overlapping by 1. Seq.windowed width would be simply equivalent to partition width 1; varying partition arguments allows solving other problems:开发者_如何学C partition size size slices sequence into non-overlapping batches, partition 1 n gets each n-th sequence item, etc.

It is not that hard to implement such functionality in F#. I once posted a naive prototype that suffers from redundant sequence evaluations; however making it into truly lazy production quality F# implementation is definitely doable.

I wonder if it was any particular reason for limiting out-of-the-box F# core library offering for sequence slicing to Seq.windowed function only?


I don't think there is any good answer to your question.

There are certainly no technical difficulties that would make it impossible to implement a more general sliding window function. It can be implemented and it would be useful. Why is it not included in the F# core library? Probably because the F# team didn't try to include every possible useful function as it would make the core library too big, too difficult to maintain and harder to use (finding the right function would be difficult if there were too many of them).

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜