<div dir="auto"><div>We recently added<div dir="auto"><br></div><div dir="auto">spanAntitone :: (k -> Bool) -> Map k a -> (Map k a, Map k a)</div><div dir="auto"><br></div><div dir="auto">I believe that should get you all the logarithmic splits you want of this type. The only question is whether we should add the simpler proposed functions for convenience.</div><br><div class="gmail_extra"><br><div class="gmail_quote">On Jan 31, 2017 2:45 PM, "Joachim Breitner" <<a href="mailto:mail@joachim-breitner.de">mail@joachim-breitner.de</a>> wrote:<br type="attribution"><blockquote class="quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">Hi,<br>
<br>
I regularly find myself in the need of splitting a map into two maps.<br>
For that we currently have these two functions:<br>
<br>
split       :: Ord k => k -> Map k a -> (Map k a, Map k a)<br>
splitLookup :: Ord k => k -> Map k a -> (Map k a, Maybe a, Map k a) <br>
<br>
Usually, split is useless to me because information (the element right<br>
on the border) gets lost. splitLookup preserves the information, but<br>
often I want the element at the border to simply be in one of the two<br>
output maps. So I would like to see<br>
<br>
splitL :: Ord k => k -> Map k a -> (Map k a, Map k a)<br>
splitR :: Ord k => k -> Map k a -> (Map k a, Map k a)<br>
<br>
with these properties<br>
<br>
uncurry union (splitL k m) == m<br>
uncurry union (splitR k m) == m<br>
all (<= k) (keys (fst (splitL k m))<br>
all (> k)  (keys (snd (splitL k m))<br>
all (< k)  (keys (fst (splitR k m))<br>
all (>= k) (keys (snd (splitR k m))<br>
<br>
These new functions should be added to Data.Map, Data.IntMap (in both<br>
variatans each) and, for consistency, Data.Set.<br>
<br>
Alternative names (in correspondence with Data.Set.lookup{LT,LE,GT,TE})<br>
would be splitLE (instead of splitL) and splitLT (instead of splitR).<br>
<br>
Corresponding issue: <a href="https://github.com/haskell/containers/issues/387" rel="noreferrer" target="_blank">https://github.com/haskell/<wbr>containers/issues/387</a><br>
Discussion period:   2 weeks (until Feb 14).<br>
<br>
Greetings,<br>
Joachim<br>
<font color="#888888"><br>
--<br>
Joachim “nomeata” Breitner<br>
  <a href="mailto:mail@joachim-breitner.de">mail@joachim-breitner.de</a> • <a href="https://www.joachim-breitner.de/" rel="noreferrer" target="_blank">https://www.joachim-breitner.<wbr>de/</a><br>
  XMPP: <a href="mailto:nomeata@joachim-breitner.de">nomeata@joachim-breitner.de</a> • OpenPGP-Key: 0xF0FBF51F<br>
  Debian Developer: <a href="mailto:nomeata@debian.org">nomeata@debian.org</a></font><br>______________________________<wbr>_________________<br>
Libraries mailing list<br>
<a href="mailto:Libraries@haskell.org">Libraries@haskell.org</a><br>
<a href="http://mail.haskell.org/cgi-bin/mailman/listinfo/libraries" rel="noreferrer" target="_blank">http://mail.haskell.org/cgi-<wbr>bin/mailman/listinfo/libraries</a><br>
<br></blockquote></div><br></div></div></div>