conduit 1.3.3 → 1.3.4
raw patch · 4 files changed
+24/−6 lines, 4 filesdep ~basePVP: major bump suggested
API removals or changes: PVP suggests a major version bump
Dependency ranges changed: base
API changes (from Hackage documentation)
+ Data.Conduit.Combinators: foldWhile :: Monad m => (a -> s -> Either e s) -> s -> ConduitT a o m (Either e s)
- Conduit: mkAcquire :: () => IO a -> (a -> IO ()) -> Acquire a
+ Conduit: mkAcquire :: IO a -> (a -> IO ()) -> Acquire a
- Conduit: mkAcquireType :: () => IO a -> (a -> ReleaseType -> IO ()) -> Acquire a
+ Conduit: mkAcquireType :: IO a -> (a -> ReleaseType -> IO ()) -> Acquire a
- Conduit: type family PrimState (m :: Type -> Type) :: Type;
+ Conduit: type family PrimState (m :: Type -> Type);
Files
- ChangeLog.md +4/−0
- conduit.cabal +1/−1
- src/Data/Conduit/Combinators.hs +14/−0
- src/Data/Conduit/Internal/Conduit.hs +5/−5
ChangeLog.md view
@@ -1,5 +1,9 @@ # ChangeLog for conduit +## 1.3.4++* Add `foldWhile` [#453](https://github.com/snoyberg/conduit/issues/453) [#456](https://github.com/snoyberg/conduit/pull/456).+ ## 1.3.3 * Add `uncons`, `unconsM`, `unconsEither`, `unconsEitherM`.
conduit.cabal view
@@ -1,5 +1,5 @@ Name: conduit-Version: 1.3.3+Version: 1.3.4 Synopsis: Streaming data processing library. description: `conduit` is a solution to the streaming data problem, allowing for production,
src/Data/Conduit/Combinators.hs view
@@ -62,6 +62,7 @@ , foldlE , foldMap , foldMapE+ , foldWhile , all , allE , any@@ -1754,6 +1755,19 @@ go a = either (return $!) (\(s', b) -> yield b >> loop s') $ f a s {-# INLINE mapAccumWhileC #-} STREAMING(mapAccumWhile, mapAccumWhileC, mapAccumWhileS, f s)+++-- | Specialized version of 'mapAccumWhile' that does not provide values downstream.+--+-- @since 1.3.4+foldWhile :: Monad m => (a -> s -> Either e s) -> s -> ConduitT a o m (Either e s)+foldWhile f = loop+ where+ loop !s = await >>= maybe (return $ Right s) go+ where+ go a = either (return . Left $!) loop $ f a s+{-# INLINE foldWhile #-}+ -- | 'concatMap' with an accumulator. --
src/Data/Conduit/Internal/Conduit.hs view
@@ -329,7 +329,7 @@ sourceToPipe :: Monad m => Source m o -> Pipe l i o u m () sourceToPipe =- go . flip unConduitT Done+ go . (`unConduitT` Done) where go (HaveOutput p o) = HaveOutput (go p) o go (NeedInput _ c) = go $ c ()@@ -339,7 +339,7 @@ sinkToPipe :: Monad m => Sink i m r -> Pipe l i o u m r sinkToPipe =- go . injectLeftovers . flip unConduitT Done+ go . injectLeftovers . (`unConduitT` Done) where go (HaveOutput _ o) = absurd o go (NeedInput p c) = NeedInput (go . p) (const $ go $ c ())@@ -349,7 +349,7 @@ conduitToPipe :: Monad m => Conduit i m o -> Pipe l i o u m () conduitToPipe =- go . injectLeftovers . flip unConduitT Done+ go . injectLeftovers . (`unConduitT` Done) where go (HaveOutput p o) = HaveOutput (go p) o go (NeedInput p c) = NeedInput (go . p) (const $ go $ c ())@@ -402,7 +402,7 @@ catchC (ConduitT p0) onErr = ConduitT $ \rest -> let go (Done r) = rest r go (PipeM mp) = PipeM $ withRunInIO $ \run -> E.catch (run (liftM go mp))- (return . flip unConduitT rest . onErr)+ (return . (`unConduitT`rest) . onErr) go (Leftover p i) = Leftover (go p) i go (NeedInput x y) = NeedInput (go . x) (go . y) go (HaveOutput p o) = HaveOutput (go p) o@@ -694,7 +694,7 @@ -- Since 1.2.6 sourceToList :: Monad m => Source m a -> m [a] sourceToList =- go . flip unConduitT Done+ go . (`unConduitT` Done) where go (Done _) = return [] go (HaveOutput src x) = liftM (x:) (go src)