conduit-merge 0.1.1.0 → 0.1.2.0
raw patch · 2 files changed
+7/−6 lines, 2 filesPVP: major bump suggested
API removals or changes: PVP suggests a major version bump
API changes (from Hackage documentation)
- Data.Conduit.Merge: mergeSources :: (Ord a, Monad m) => [Source m a] -> Producer m a
+ Data.Conduit.Merge: mergeSources :: (Ord a, Foldable f, Monad m) => f (Source m a) -> Producer m a
- Data.Conduit.Merge: mergeSourcesOn :: (Ord b, Monad m) => (a -> b) -> [Source m a] -> Producer m a
+ Data.Conduit.Merge: mergeSourcesOn :: (Ord b, Foldable f, Monad m) => (a -> b) -> f (Source m a) -> Producer m a
Files
- conduit-merge.cabal +1/−1
- src/Data/Conduit/Merge.hs +6/−5
conduit-merge.cabal view
@@ -1,5 +1,5 @@ name: conduit-merge-version: 0.1.1.0+version: 0.1.2.0 cabal-version: >=1.10 build-type: Simple license: BSD3
src/Data/Conduit/Merge.hs view
@@ -4,15 +4,16 @@ import Control.Monad.Trans (lift) import Data.Conduit (Producer, Source, await, newResumableSource, yield, ($$++))+import Data.Foldable (toList) import Data.List (sortOn) --- | Merge multiple sorted source into one sorted producer.-mergeSources :: (Ord a, Monad m) => [Source m a] -> Producer m a+-- | Merge multiple sorted sources into one sorted producer.+mergeSources :: (Ord a, Foldable f, Monad m) => f (Source m a) -> Producer m a mergeSources = mergeSourcesOn id --- | Merge multiple sorted source into one sorted producer using specified sorting key.-mergeSourcesOn :: (Ord b, Monad m) => (a -> b) -> [Source m a] -> Producer m a-mergeSourcesOn key = mergeResumable . fmap newResumableSource+-- | Merge multiple sorted sources into one sorted producer using specified sorting key.+mergeSourcesOn :: (Ord b, Foldable f, Monad m) => (a -> b) -> f (Source m a) -> Producer m a+mergeSourcesOn key = mergeResumable . fmap newResumableSource . toList where mergeResumable sources = do prefetchedSources <- lift $ traverse ($$++ await) sources