Proposal: Add splitL and splitR to container’s Map APIs
Joachim Breitner
mail at joachim-breitner.de
Tue Jan 31 20:05:38 UTC 2017
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" <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
>
>
> _______________________________________________
> Libraries mailing list
> Libraries at haskell.org
> http://mail.haskell.org/cgi-bin/mailman/listinfo/libraries
--
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
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 833 bytes
Desc: This is a digitally signed message part
URL: <http://mail.haskell.org/pipermail/libraries/attachments/20170131/2036f795/attachment.sig>
More information about the Libraries
mailing list