Map 0.1.2.0 → 0.1.3.0
raw patch · 2 files changed
+19/−6 lines, 2 filesPVP ok
version bump matches the API change (PVP)
API changes (from Hackage documentation)
+ Data.Map.Class: mapKeysMaybe :: (StaticMap m, Map n) => (Key m -> Maybe (Key n)) -> m a -> n a
+ Data.Map.Class: mapKeysMaybeWith :: (StaticMap m, Map n) => (a -> a -> a) -> (Key m -> Maybe (Key n)) -> m a -> n a
+ Data.Map.Class: mapKeysWith :: (StaticMap m, Map n) => (a -> a -> a) -> (Key m -> Key n) -> m a -> n a
+ Data.Map.Class: traverseKeysMaybe :: (StaticMap m, Map n, Applicative p) => (Key m -> p (Maybe (Key n))) -> m a -> p (n a)
+ Data.Map.Class: traverseKeysMaybeWith :: (StaticMap m, Map n, Applicative p) => (a -> a -> a) -> (Key m -> p (Maybe (Key n))) -> m a -> p (n a)
+ Data.Map.Class: traverseKeysWith :: (StaticMap m, Map n, Applicative p) => (a -> a -> a) -> (Key m -> p (Key n)) -> m a -> p (n a)
Files
- Data/Map/Class.hs +18/−5
- Map.cabal +1/−1
Data/Map/Class.hs view
@@ -18,11 +18,6 @@ import Util ((∘), (∘∘), compose2, bind2) import Util.Private (Endo (..)) --- | Laws:------ * @'adjustA' 'pure' _ = 'pure'@------ * @'adjustA' 'Const' k '<=<' 'traverseWithKey' f = 'fmap' 'Const' '.' f k '<=<' 'getConst' '.' 'adjustA' 'Const' k@ class Traversable map => StaticMap map where type Key map adjustA :: Applicative p => (a -> p a) -> Key map -> map a -> p (map a)@@ -228,8 +223,26 @@ mapKeys :: (StaticMap m, Map n) => (Key m -> Key n) -> m a -> n a mapKeys f = foldrWithKey (insert . f) empty +mapKeysWith :: (StaticMap m, Map n) => (a -> a -> a) -> (Key m -> Key n) -> m a -> n a+mapKeysWith combine f = foldrWithKey (insertWith combine . f) empty+ traverseKeys :: (StaticMap m, Map n, Applicative p) => (Key m -> p (Key n)) -> m a -> p (n a) traverseKeys f = fmap (flip appEndo empty) . foldMapWithKeyA (\ i a -> (\ j -> Endo $ insert j a) <$> f i)++traverseKeysWith :: (StaticMap m, Map n, Applicative p) => (a -> a -> a) -> (Key m -> p (Key n)) -> m a -> p (n a)+traverseKeysWith combine f = fmap (flip appEndo empty) . foldMapWithKeyA (\ i a -> (\ j -> Endo $ insertWith combine j a) <$> f i)++mapKeysMaybe :: (StaticMap m, Map n) => (Key m -> Maybe (Key n)) -> m a -> n a+mapKeysMaybe f = runIdentity . traverseKeysMaybe (Identity . f)++mapKeysMaybeWith :: (StaticMap m, Map n) => (a -> a -> a) -> (Key m -> Maybe (Key n)) -> m a -> n a+mapKeysMaybeWith combine f = runIdentity . traverseKeysMaybeWith combine (Identity . f)++traverseKeysMaybe :: (StaticMap m, Map n, Applicative p) => (Key m -> p (Maybe (Key n))) -> m a -> p (n a)+traverseKeysMaybe f = fmap (flip appEndo empty) . foldMapWithKeyA (\ i a -> foldMap (\ j -> Endo $ insert j a) <$> f i)++traverseKeysMaybeWith :: (StaticMap m, Map n, Applicative p) => (a -> a -> a) -> (Key m -> p (Maybe (Key n))) -> m a -> p (n a)+traverseKeysMaybeWith combine f = fmap (flip appEndo empty) . foldMapWithKeyA (\ i a -> foldMap (\ j -> Endo $ insertWith combine j a) <$> f i) keys :: StaticMap map => map a -> map (Key map) keys = mapWithKey pure
Map.cabal view
@@ -1,5 +1,5 @@ name: Map-version: 0.1.2.0+version: 0.1.3.0 synopsis: Class of key-value maps -- description: license: BSD3