More Data.Set and Data.Map operations

David Feuer david.feuer at gmail.com
Sun Aug 7 03:15:09 UTC 2016


Cale Gibbard and Ryan Trinkle are interested in adding some more
operations they say will be useful in their work. Note that
unionWithMapping is intended to enable an efficient implementation of
alignWith in Data.Align in the `these` package.

Set:

filterIncreasing :: Ord a => (a -> Bool) -> Set a -> Set a
filterDecreasing :: Ord a => (a -> Bool) -> Set a -> Set a
partitionIncreasing :: Ord a => (a -> Bool) -> Set a -> (Set a, Set a)

Map:

filterKeysIncreasing :: Ord k => (k -> Bool) -> Map k a -> Map k a
filterKeysDecreasing :: Ord k => (k -> Bool) -> Map k a -> Map k a
partitionKeysIncreasing :: Ord k => (k -> Bool) -> Map k a -> (Map k a, Map k a)

traverseMaybe :: Applicative f => (a -> f (Maybe b)) -> Map k a -> f (Map k b)

alterMany :: Ord k => (a -> Maybe b -> Maybe b) -> Map k a -> Map k b -> Map k b

alterManyA :: (Applicative f, Ord k) => (a -> Maybe b -> f (Maybe b))
-> Map k a -> Map k b -> f (Map k b)

unionWithMapping :: Ord k => (a -> c) -> (b -> c) -> (a -> b -> c) ->
Map k a -> Map k b -> Map k c

unionWithKeyMapping :: Ord k => (k -> a -> c) -> (k -> b -> c) -> (k
-> a -> b -> c)
-> Map k a -> Map k b -> Map k c


More information about the Libraries mailing list