list-t 0.3.0 → 0.3.1
raw patch · 2 files changed
+13/−1 lines, 2 filesPVP ok
version bump matches the API change (PVP)
API changes (from Hackage documentation)
+ ListT: foldMaybe :: (Monad m, MonadTransUncons t) => (r -> a -> m (Maybe r)) -> r -> t m a -> m r
Files
- library/ListT.hs +12/−0
- list-t.cabal +1/−1
library/ListT.hs view
@@ -10,6 +10,7 @@ tail, null, fold,+ foldMaybe, toList, toReverseList, traverse_,@@ -40,6 +41,7 @@ import Control.Monad.IO.Class import Control.Monad.Trans.Class import Control.Monad.Trans.Reader+import Control.Monad.Trans.Maybe import Control.Monad.Trans.Control import Control.Monad.Base @@ -194,6 +196,16 @@ fold :: (Monad m, MonadTransUncons t) => (r -> a -> m r) -> r -> t m a -> m r fold s r = uncons >=> maybe (return r) (\(h, t) -> s r h >>= \r' -> fold s r' t)++-- |+-- A version of 'fold', which allows early termination.+{-# INLINABLE foldMaybe #-}+foldMaybe :: (Monad m, MonadTransUncons t) => (r -> a -> m (Maybe r)) -> r -> t m a -> m r+foldMaybe s r l =+ liftM (maybe r id) $ runMaybeT $ do+ (h, t) <- MaybeT $ uncons l+ r' <- MaybeT $ s r h+ lift $ foldMaybe s r' t -- | -- Execute, folding to a list.
list-t.cabal view
@@ -1,7 +1,7 @@ name: list-t version:- 0.3.0+ 0.3.1 synopsis: ListT done right description: