hydrogen-multimap 0.2 → 0.3
raw patch · 2 files changed
+14/−6 lines, 2 filesdep +ghc-primdep ~containersPVP ok
version bump matches the API change (PVP)
Dependencies added: ghc-prim
Dependency ranges changed: containers
API changes (from Hackage documentation)
Files
- hydrogen-multimap.cabal +3/−2
- src/Hydrogen/MultiMap.hs +11/−4
hydrogen-multimap.cabal view
@@ -1,5 +1,5 @@ name: hydrogen-multimap-version: 0.2+version: 0.3 homepage: https://scravy.de/hydrogen-multimap/ synopsis: Hydrogen Multimap license: MIT@@ -18,7 +18,8 @@ library exposed-modules: Hydrogen.MultiMap build-depends: base >=4.5 && <5- , containers >=0.4+ , containers >=0.4.2.1+ , ghc-prim hs-source-dirs: src ghc-options: -Wall default-language: Haskell2010
src/Hydrogen/MultiMap.hs view
@@ -30,12 +30,13 @@ import GHC.Generics (Generic) -import Data.Map (Map)-import Data.Set (Set)- import qualified Data.Map as Map+import qualified Data.Set as Set import qualified Data.List as List +type Map = Map.Map+type Set = Set.Set+ data MultiMap k v = MultiMap (Map k [v]) Int deriving (Eq, Ord, Functor, Foldable, Traversable, Generic, Typeable) @@ -115,10 +116,16 @@ fromList' :: Ord k => [(k, v)] -> MultiMap k v fromList' = foldr (uncurry insert) empty -fromSet :: Ord k => (k -> [v]) -> Set k -> MultiMap k v+fromSet :: forall k. forall v. Ord k => (k -> [v]) -> Set k -> MultiMap k v fromSet f s = MultiMap m (count m) where+ m :: Map k [v]+#if MIN_VERSION_containers(5,0,0) m = Map.fromSet f s+#else+ m = Map.fromList $ zip xs (map f xs)+ xs = Set.toList s+#endif union :: Ord k => MultiMap k v -> MultiMap k v -> MultiMap k v union (MultiMap m1 s1) (MultiMap m2 s2) = MultiMap (Map.unionWith (++) m1 m2) (s1 + s2)