list-t 1.0.5.4 → 1.0.5.5
raw patch · 2 files changed
+13/−6 lines, 2 filesPVP: major bump suggested
API removals or changes: PVP suggests a major version bump
API changes (from Hackage documentation)
- ListT: fold :: Monad m => (r -> a -> m r) -> r -> ListT m a -> m r
+ ListT: fold :: Monad m => (b -> a -> m b) -> b -> ListT m a -> m b
- ListT: foldMaybe :: Monad m => (r -> a -> m (Maybe r)) -> r -> ListT m a -> m r
+ ListT: foldMaybe :: Monad m => (b -> a -> m (Maybe b)) -> b -> ListT m a -> m b
Files
- library/ListT.hs +12/−5
- list-t.cabal +1/−1
library/ListT.hs view
@@ -340,14 +340,21 @@ -- | -- Execute, applying a strict left fold. {-# INLINEABLE fold #-}-fold :: Monad m => (r -> a -> m r) -> r -> ListT m a -> m r-fold s r =- uncons >=> maybe (return r) (\(!h, t) -> s r h >>= \r' -> fold s r' t)+fold :: Monad m => (b -> a -> m b) -> b -> ListT m a -> m b+fold step = go+ where+ go !acc (ListT run) =+ run >>= \case+ Just (element, next) -> do+ acc' <- step acc element+ go acc' next+ Nothing ->+ return acc -- | -- A version of 'fold', which allows early termination. {-# INLINEABLE foldMaybe #-}-foldMaybe :: Monad m => (r -> a -> m (Maybe r)) -> r -> ListT m a -> m r+foldMaybe :: Monad m => (b -> a -> m (Maybe b)) -> b -> ListT m a -> m b foldMaybe s r l = fmap (maybe r id) $ runMaybeT $ do@@ -356,7 +363,7 @@ lift $ foldMaybe s r' t -- |--- Apply a left fold abstraction from the \"foldl\" package.+-- Apply the left fold abstraction from the \"foldl\" package. applyFoldM :: Monad m => FoldM m i o -> ListT m i -> m o applyFoldM (FoldM step init extract) lt = do a <- init
list-t.cabal view
@@ -1,6 +1,6 @@ cabal-version: 3.0 name: list-t-version: 1.0.5.4+version: 1.0.5.5 synopsis: ListT done right description: A correct implementation of the list monad-transformer.