Map 0.1.1.0 → 0.1.2.0
raw patch · 2 files changed
+13/−2 lines, 2 filesPVP ok
version bump matches the API change (PVP)
API changes (from Hackage documentation)
+ Data.Map.Class: fromListWithKeyM :: (Map map, Monad m) => (Key map -> a -> a -> m a) -> [(Key map, a)] -> m (map a)
+ Data.Map.Class: fromListWithM :: (Map map, Monad m) => (a -> a -> m a) -> [(Key map, a)] -> m (map a)
Files
- Data/Map/Class.hs +12/−1
- Map.cabal +1/−1
Data/Map/Class.hs view
@@ -15,9 +15,14 @@ import qualified Data.Map as M import qualified Data.Map.Merge.Lazy as M import Data.Monoid (Dual (..), Last (..))-import Util ((∘), (∘∘), compose2)+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)@@ -186,6 +191,12 @@ fromListWithKey :: Map map => (Key map -> a -> a -> a) -> [(Key map, a)] -> map a fromListWithKey f = Foldable.foldl' (flip . uncurry $ insertWith =<< f) empty++fromListWithM :: (Map map, Monad m) => (a -> a -> m a) -> [(Key map, a)] -> m (map a)+fromListWithM = fromListWithKeyM . pure++fromListWithKeyM :: (Map map, Monad m) => (Key map -> a -> a -> m a) -> [(Key map, a)] -> m (map a)+fromListWithKeyM f = sequenceA . fromListWithKey (bind2 . f) . (fmap . fmap) pure adjustLookupA :: (StaticMap map, Applicative p) => (a -> p a) -> Key map -> map a -> p (Maybe a, map a) adjustLookupA f = sequenceA ∘∘ (getLast *** id <<< getCompose) ∘∘ adjustA (\ a -> Compose (pure a, f a))
Map.cabal view
@@ -1,5 +1,5 @@ name: Map-version: 0.1.1.0+version: 0.1.2.0 synopsis: Class of key-value maps -- description: license: BSD3