
Hi, good point. I am on an older version, so I did not see that function yet. Indeed that function would nicely solve my use case, and spanAntitone (<=k) isn’t much longer than my proposed spanLE k The proposal still stands for the question of convenience, but the need is much less now. Greetings, Joachim Am Dienstag, den 31.01.2017, 14:54 -0500 schrieb David Feuer:
We recently added
spanAntitone :: (k -> Bool) -> Map k a -> (Map k a, Map k a)
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.
On Jan 31, 2017 2:45 PM, "Joachim Breitner"
wrote: Hi,
I regularly find myself in the need of splitting a map into two maps. For that we currently have these two functions:
split :: Ord k => k -> Map k a -> (Map k a, Map k a) splitLookup :: Ord k => k -> Map k a -> (Map k a, Maybe a, Map k a)
Usually, split is useless to me because information (the element right on the border) gets lost. splitLookup preserves the information, but often I want the element at the border to simply be in one of the two output maps. So I would like to see
splitL :: Ord k => k -> Map k a -> (Map k a, Map k a) splitR :: Ord k => k -> Map k a -> (Map k a, Map k a)
with these properties
uncurry union (splitL k m) == m uncurry union (splitR k m) == m all (<= k) (keys (fst (splitL k m)) all (> k) (keys (snd (splitL k m)) all (< k) (keys (fst (splitR k m)) all (>= k) (keys (snd (splitR k m))
These new functions should be added to Data.Map, Data.IntMap (in both variatans each) and, for consistency, Data.Set.
Alternative names (in correspondence with Data.Set.lookup{LT,LE,GT,TE}) would be splitLE (instead of splitL) and splitLT (instead of splitR).
Corresponding issue: https://github.com/haskell/containers/issues/387 Discussion period: 2 weeks (until Feb 14).
Greetings, Joachim
-- Joachim “nomeata” Breitner mail@joachim-breitner.de • https://www.joachim-breitner.de/ XMPP: nomeata@joachim-breitner.de • OpenPGP-Key: 0xF0FBF51F Debian Developer: nomeata@debian.org _______________________________________________ Libraries mailing list Libraries@haskell.org http://mail.haskell.org/cgi-bin/mailman/listinfo/libraries
_______________________________________________ Libraries mailing list Libraries@haskell.org http://mail.haskell.org/cgi-bin/mailman/listinfo/libraries -- Joachim “nomeata” Breitner mail@joachim-breitner.de • https://www.joachim-breitner.de/ XMPP: nomeata@joachim-breitner.de • OpenPGP-Key: 0xF0FBF51F Debian Developer: nomeata@debian.org