Re: Proposal: Add splitL and splitR to container’s Map APIs
David Feuer
david.feuer at gmail.com
Tue Jan 31 19:54:43 UTC 2017
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" <mail at joachim-breitner.de>
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 at joachim-breitner.de • https://www.joachim-breitner.de/
XMPP: nomeata at joachim-breitner.de • OpenPGP-Key: 0xF0FBF51F
Debian Developer: nomeata at debian.org
_______________________________________________
Libraries mailing list
Libraries at haskell.org
http://mail.haskell.org/cgi-bin/mailman/listinfo/libraries
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.haskell.org/pipermail/libraries/attachments/20170131/b025ed25/attachment.html>
More information about the Libraries
mailing list