Proposal: export more Data.Sequence internals

Carter Schonwald carter.schonwald at
Sun Feb 7 14:41:45 UTC 2021

What are some down sides that exposing these could entail?  Like, what are
data structure changes in implementation that are worth exploring that
suddenly become major version bumps whereas before they’d be invisible

Is there any way backpack and or cabals multi library package support can
help here ?

On Fri, Feb 5, 2021 at 4:22 PM David Feuer <david.feuer at> wrote:

> I'd like containers to export more Data.Sequence internals, and to do
> so in a way that allows external users to rely on them. I propose the
> following:
> 1. Add a module, Data.FingerTree.IntPlus, abstractly exporting the
> finger trees used to represent sequences. These can also be used for
> other finger trees with measurements in the (Int, +) monoid. This
> would include various basic operations for cons, snoc, and splitting,
> with most names the same as for sequences.
> 2. Add a module, Data.FingerTree.IntPlus.Unsafe, exporting efficient
> mapping/traversing functions that rely on specific preconditions to
> maintain the internal fingertree annotation invariant.
> 3. Add a module, Data.Sequence.StableInternal, exporting the internal
> structure of sequences and also some internal functions that may be
> useful elsewhere (I'm particularly interested in the `splitMap`
> function and future variants thereof). Unlike the `.Internal` module,
> this module would be subject to the package version policy, and would
> therefore be more suitable for use by other packages.
> I am very open to suggestions for modifications to the module names.
> One option might be to put all the FingerTree.IntPlus stuff in the
> Data.Sequence.StableInternal hierarchy, if folks think it should be
> buried a bit.
> David
> _______________________________________________
> Libraries mailing list
> Libraries at
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <>

More information about the Libraries mailing list