<div dir="auto">Sounds reasonable to me.<div dir="auto">I don't have any particular input on the module names or hierarchy.</div><div dir="auto"><br></div><div dir="auto">Cheers,</div><div dir="auto">George</div></div><br><div class="gmail_quote"><div dir="ltr" class="gmail_attr">On Sat, 6 Feb 2021, 07:22 David Feuer, <<a href="mailto:david.feuer@gmail.com">david.feuer@gmail.com</a>> wrote:<br></div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">I'd like containers to export more Data.Sequence internals, and to do<br>
so in a way that allows external users to rely on them. I propose the<br>
following:<br>
<br>
1. Add a module, Data.FingerTree.IntPlus, abstractly exporting the<br>
finger trees used to represent sequences. These can also be used for<br>
other finger trees with measurements in the (Int, +) monoid. This<br>
would include various basic operations for cons, snoc, and splitting,<br>
with most names the same as for sequences.<br>
2. Add a module, Data.FingerTree.IntPlus.Unsafe, exporting efficient<br>
mapping/traversing functions that rely on specific preconditions to<br>
maintain the internal fingertree annotation invariant.<br>
3. Add a module, Data.Sequence.StableInternal, exporting the internal<br>
structure of sequences and also some internal functions that may be<br>
useful elsewhere (I'm particularly interested in the `splitMap`<br>
function and future variants thereof). Unlike the `.Internal` module,<br>
this module would be subject to the package version policy, and would<br>
therefore be more suitable for use by other packages.<br>
<br>
I am very open to suggestions for modifications to the module names.<br>
One option might be to put all the FingerTree.IntPlus stuff in the<br>
Data.Sequence.StableInternal hierarchy, if folks think it should be<br>
buried a bit.<br>
<br>
David<br>
_______________________________________________<br>
Libraries mailing list<br>
<a href="mailto:Libraries@haskell.org" target="_blank" rel="noreferrer">Libraries@haskell.org</a><br>
<a href="http://mail.haskell.org/cgi-bin/mailman/listinfo/libraries" rel="noreferrer noreferrer" target="_blank">http://mail.haskell.org/cgi-bin/mailman/listinfo/libraries</a><br>
</blockquote></div>