packages feed

containers 0.5.9.1 → 0.5.9.2

raw patch · 13 files changed

+47/−71 lines, 13 filesPVP ok

version bump matches the API change (PVP)

API changes (from Hackage documentation)

Files

Data/IntMap/Internal.hs view
@@ -1059,30 +1059,14 @@                | zero p1 m2        = bin p2 m2 (go t1 l2) Nil                | otherwise         = bin p2 m2 Nil (go t1 r2) -    go t1'@(Bin _ _ _ _) t2'@(IntSet.Tip k2' _) = merge0 t2' k2' t1'-      where-        merge0 t2 k2 t1@(Bin p1 m1 l1 r1)-          | nomatch k2 p1 m1 = t1-          | zero k2 m1 = binCheckLeft p1 m1 (merge0 t2 k2 l1) r1-          | otherwise  = binCheckRight p1 m1 l1 (merge0 t2 k2 r1)-        merge0 _ k2 t1@(Tip k1 _)-          | k1 == k2 = Nil-          | otherwise = t1-        merge0 _ _  Nil = Nil+    go t1'@(Bin _ _ _ _) t2'@(IntSet.Tip _ _) =+      filterWithKey (\k _ -> k `IntSet.notMember` t2') t1'      go t1@(Bin _ _ _ _) IntSet.Nil = t1 -    go t1'@(Tip k1' _) t2' = merge0 t1' k1' t2'-      where-        merge0 t1 k1 (IntSet.Bin p2 m2 l2 r2)-          | nomatch k1 p2 m2 = t1-          | zero k1 m2 = bin p2 m2 (merge0 t1 k1 l2) Nil-          | otherwise  = bin p2 m2 Nil (merge0 t1 k1 r2)-        merge0 t1 k1 (IntSet.Tip k2 _)-          | k1 == k2 = Nil-          | otherwise = t1-        merge0 t1 _  IntSet.Nil = t1-+    go t1'@(Tip k1' _) t2'+      | k1' `IntSet.member` t2' = Nil+      | otherwise = t1'     go Nil _ = Nil  @@ -1120,30 +1104,13 @@                | zero p1 m2        = bin p2 m2 (go t1 l2) Nil                | otherwise         = bin p2 m2 Nil (go t1 r2) -    go t1'@(Bin _ _ _ _) t2'@(IntSet.Tip k2' _) = merge0 t2' k2' t1'-      where-        merge0 t2 k2 (Bin p1 m1 l1 r1)-          | nomatch k2 p1 m1 = Nil-          | zero k2 m1 = bin p1 m1 (merge0 t2 k2 l1) Nil-          | otherwise  = bin p1 m1 Nil (merge0 t2 k2 r1)-        merge0 _ k2 t1@(Tip k1 _)-          | k1 == k2 = t1-          | otherwise = Nil-        merge0 _ _  Nil = Nil-+    go t1'@(Bin _ _ _ _) t2'@(IntSet.Tip _ _) =+      filterWithKey (\k _ -> k `IntSet.member` t2') t1'     go (Bin _ _ _ _) IntSet.Nil = Nil -    go t1'@(Tip k1' _) t2' = merge0 t1' k1' t2'-      where-        merge0 t1 k1 (IntSet.Bin p2 m2 l2 r2)-          | nomatch k1 p2 m2 = Nil-          | zero k1 m2 = bin p2 m2 (merge0 t1 k1 l2) Nil-          | otherwise  = bin p2 m2 Nil (merge0 t1 k1 r2)-        merge0 t1 k1 (IntSet.Tip k2 _)-          | k1 == k2 = t1-          | otherwise = Nil-        merge0 _ _  IntSet.Nil = Nil-+    go t1'@(Tip k1' _) t2'+      | k1' `IntSet.member` t2' = t1'+      | otherwise = Nil     go Nil _ = Nil  -- | /O(n+m)/. The intersection with a combining function.@@ -1574,7 +1541,7 @@ -- -- > preserveMissing :: SimpleWhenMissing x x ----- prop> preserveMissing = Lazy.Merge.mapMaybeMissing (\_ x -> Just x)+-- prop> preserveMissing = Merge.Lazy.mapMaybeMissing (\_ x -> Just x) -- -- but @preserveMissing@ is much faster. preserveMissing :: Applicative f => WhenMissing f x x@@ -1620,7 +1587,7 @@ -- -- > filterMissing :: (k -> x -> Bool) -> SimpleWhenMissing x x ----- prop> filterMissing f = Lazy.Merge.mapMaybeMissing $ \k x -> guard (f k x) *> Just x+-- prop> filterMissing f = Merge.Lazy.mapMaybeMissing $ \k x -> guard (f k x) *> Just x -- -- but this should be a little faster. filterMissing@@ -1634,7 +1601,7 @@ -- | Filter the entries whose keys are missing from the other map -- using some 'Applicative' action. ----- > filterAMissing f = Lazy.Merge.traverseMaybeMissing $+-- > filterAMissing f = Merge.Lazy.traverseMaybeMissing $ -- >   \k x -> (\b -> guard b *> Just x) <$> f k x -- -- but this should be a little faster.
Data/IntMap/Merge/Lazy.hs view
@@ -33,9 +33,9 @@ -- -- The 'merge' and 'mergeA' functions are shared by -- the lazy and strict modules. Only the choice of merge tactics--- determines strictness. If you use 'Data.Map.Strict.Merge.mapMissing'--- from "Data.Map.Strict.Merge" then the results will be forced before--- they are inserted. If you use 'Data.Map.Lazy.Merge.mapMissing' from+-- determines strictness. If you use 'Data.Map.Merge.Strict.mapMissing'+-- from "Data.Map.Merge.Strict" then the results will be forced before+-- they are inserted. If you use 'Data.Map.Merge.Lazy.mapMissing' from -- this module then they will not. -- -- == Efficiency note
Data/IntMap/Merge/Strict.hs view
@@ -33,10 +33,10 @@ -- -- The 'merge' and 'mergeA' functions are shared by -- the lazy and strict modules. Only the choice of merge tactics--- determines strictness. If you use 'Data.Map.Strict.Merge.mapMissing'+-- determines strictness. If you use 'Data.Map.Merge.Strict.mapMissing' -- from this module then the results will be forced before they are--- inserted. If you use 'Data.Map.Lazy.Merge.mapMissing' from--- "Data.Map.Lazy.Merge" then they will not.+-- inserted. If you use 'Data.Map.Merge.Lazy.mapMissing' from+-- "Data.Map.Merge.Lazy" then they will not. -- -- == Efficiency note --
Data/Map/Internal.hs view
@@ -348,7 +348,7 @@     , MaybeS(..)     , Identity(..) -    -- Used by Map.Lazy.Merge+    -- Used by Map.Merge.Lazy     , mapWhenMissing     , mapWhenMatched     , lmapWhenMissing@@ -2257,7 +2257,7 @@ -- preserveMissing :: SimpleWhenMissing k x x -- @ ----- prop> preserveMissing = Lazy.Merge.mapMaybeMissing (\_ x -> Just x)+-- prop> preserveMissing = Merge.Lazy.mapMaybeMissing (\_ x -> Just x) -- -- but @preserveMissing@ is much faster. preserveMissing :: Applicative f => WhenMissing f k x x@@ -2304,7 +2304,7 @@ -- filterMissing :: (k -> x -> Bool) -> SimpleWhenMissing k x x -- @ ----- prop> filterMissing f = Lazy.Merge.mapMaybeMissing $ \k x -> guard (f k x) *> Just x+-- prop> filterMissing f = Merge.Lazy.mapMaybeMissing $ \k x -> guard (f k x) *> Just x -- -- but this should be a little faster. filterMissing :: Applicative f@@ -2318,7 +2318,7 @@ -- using some 'Applicative' action. -- -- @--- filterAMissing f = Lazy.Merge.traverseMaybeMissing $+-- filterAMissing f = Merge.Lazy.traverseMaybeMissing $ --   \k x -> (\b -> guard b *> Just x) <$> f k x -- @ --
Data/Map/Lazy.hs view
@@ -120,7 +120,7 @@     , intersectionWithKey      -- ** General combining functions-    -- | See "Data.Map.Lazy.Merge"+    -- | See "Data.Map.Merge.Lazy"      -- ** Unsafe general combining function 
Data/Map/Merge/Lazy.hs view
@@ -33,9 +33,9 @@ -- -- The 'merge' and 'mergeA' functions are shared by -- the lazy and strict modules. Only the choice of merge tactics--- determines strictness. If you use 'Data.Map.Strict.Merge.mapMissing'--- from "Data.Map.Strict.Merge" then the results will be forced before--- they are inserted. If you use 'Data.Map.Lazy.Merge.mapMissing' from+-- determines strictness. If you use 'Data.Map.Merge.Strict.mapMissing'+-- from "Data.Map.Merge.Strict" then the results will be forced before+-- they are inserted. If you use 'Data.Map.Merge.Lazy.mapMissing' from -- this module then they will not. -- -- == Efficiency note
Data/Map/Merge/Strict.hs view
@@ -33,10 +33,10 @@ -- -- The 'merge' and 'mergeA' functions are shared by -- the lazy and strict modules. Only the choice of merge tactics--- determines strictness. If you use 'Data.Map.Strict.Merge.mapMissing'+-- determines strictness. If you use 'Data.Map.Merge.Strict.mapMissing' -- from this module then the results will be forced before they are--- inserted. If you use 'Data.Map.Lazy.Merge.mapMissing' from--- "Data.Map.Lazy.Merge" then they will not.+-- inserted. If you use 'Data.Map.Merge.Lazy.mapMissing' from+-- "Data.Map.Merge.Lazy" then they will not. -- -- == Efficiency note --
Data/Map/Strict.hs view
@@ -128,7 +128,7 @@     , intersectionWithKey      -- ** General combining functions-    -- | See "Data.Map.Strict.Merge"+    -- | See "Data.Map.Merge.Strict"      -- ** Deprecated general combining function 
Data/Map/Strict/Internal.hs view
@@ -1193,8 +1193,8 @@ -- -- WARNING: This function can produce corrupt maps and its results -- may depend on the internal structures of its inputs. Users should--- prefer 'Data.Map.Strict.Merge.merge' or--- 'Data.Map.Strict.Merge.mergeA'.+-- prefer 'Data.Map.Merge.Strict.merge' or+-- 'Data.Map.Merge.Strict.mergeA'. -- -- When 'mergeWithKey' is given three arguments, it is inlined to the call -- site. You should therefore use 'mergeWithKey' only to define custom
Data/Tree.hs view
@@ -100,13 +100,13 @@       lcomp (Node a fr) (Node a' fr') = cmp a a' <> liftCompare lcomp fr fr'  instance Show1 Tree where-  liftShowsPrec shw shwl _p (Node a fr) =+  liftShowsPrec shw shwl p (Node a fr) = showParen (p > 10) $         showString "Node {rootLabel = " . shw 0 a . showString ", " .           showString "subForest = " . liftShowList shw shwl fr .           showString "}"  instance Read1 Tree where-  liftReadsPrec rd rdl _p = readParen False $+  liftReadsPrec rd rdl p = readParen (p > 10) $     \s -> do       ("Node", s1) <- lex s       ("{", s2) <- lex s1
changelog.md view
@@ -1,8 +1,15 @@ # Changelog for [`containers` package](http://github.com/haskell/containers) -## 0.5.9.1+## 0.5.9.2 -* Planned for GHC 8.2.+* Fix completely broken implementations of `restrictKeys` and `withoutKeys`+in `Data.IntMap`.++* Fix minor bug in `Show1` instance for `Data.Tree`.++* Fix broken documentation links.++## 0.5.9.1  * Add `merge` and `mergeA` for `Data.IntMap`. 
containers.cabal view
@@ -1,5 +1,5 @@ name: containers-version: 0.5.9.1+version: 0.5.9.2 license: BSD3 license-file: LICENSE maintainer: libraries@haskell.org
tests/intmap-properties.hs view
@@ -167,6 +167,8 @@              , testProperty "foldl'"               prop_foldl'              , testProperty "keysSet"              prop_keysSet              , testProperty "fromSet"              prop_fromSet+             , testProperty "restrictKeys"         prop_restrictKeys+             , testProperty "withoutKeys"          prop_withoutKeys              ]  apply2 :: Fun (a, b) c -> a -> b -> c