id summary reporter owner description type status priority milestone component version resolution keywords cc os architecture failure testcase blockedby blocking related differential wikipage
3271 New methods for Data.Sequence LouisWasserman LouisWasserman "`Data.Sequence` is meant as a general-purpose implementation of finite sequences. The range of methods it offers, however, is considerably more constrained than `Data.List`, even allowing for the constraint that sequences are finite.
The following methods cannot be efficiently implemented based on currently exported methods from `Data.Sequence`.
* `zipWith` and its variants. Note: it suffices to define `zipWith` alone.
* `replicate`. (This can be implemented in `O(log n)` time with node sharing.)
The following methods are relatively simple extensions of already-exported methods. It may be more appropriate to allow library users to reimplement them themselves.
* `scanl`, `scanr`, and variants. This is relatively straightforward using methods borrowed from the `Traversable` instance.
* `tails` and `inits`. `tails` is equivalent to `scanr (<|) empty`; `inits` is similar.
* `takeWhile`, `dropWhile`, `span`, `break` (and perhaps from-the-end variations). Finding a breakpoint index can be done as efficiently on lists as on sequences; find the appropriate breakpoint index after converting to a list and use `splitAt`.
* `unfoldr` and `iterate`, though the latter would require a finite number of iterations to perform.
* `partition`. I can conceive of a slightly more efficient implementation than the trivial one, but the gains may be minimal." proposal closed normal Not GHC libraries (other) fixed Unknown/Multiple Unknown/Multiple None/Unknown