Safe Haskell | Safe-Inferred |
---|---|
Language | Haskell2010 |
Ganeti.Utils.Monad
Description
Utility functions for MonadPlus operations
Synopsis
- mretryN :: MonadPlus m => Int -> (Int -> m a) -> m a
- retryMaybeN :: Monad m => Int -> (Int -> MaybeT m a) -> m (Maybe a)
- anyM :: Monad m => (a -> m Bool) -> [a] -> m Bool
- allM :: Monad m => (a -> m Bool) -> [a] -> m Bool
- orM :: Monad m => [m Bool] -> m Bool
- unfoldrM :: Monad m => (a -> m (Maybe (b, a))) -> a -> m [b]
- unfoldrM' :: (Monad m, MonadPlus f) => (a -> m (Maybe (b, a))) -> a -> m (f b)
- retryErrorN :: MonadError e m => Int -> (Int -> m a) -> m a
Documentation
mretryN :: MonadPlus m => Int -> (Int -> m a) -> m a #
Retries the given action up to n
times.
The action signals failure by mzero
.
retryMaybeN :: Monad m => Int -> (Int -> MaybeT m a) -> m (Maybe a) #
Retries the given action up to n
times.
The action signals failure by mzero
.
unfoldrM :: Monad m => (a -> m (Maybe (b, a))) -> a -> m [b] #
See unfoldr
. This is a monad-friendly version of that.
unfoldrM' :: (Monad m, MonadPlus f) => (a -> m (Maybe (b, a))) -> a -> m (f b) #
See unfoldr
. This is a monad-friendly version of that, with a
twist. Rather than returning a list, it returns any MonadPlus type of your
choice.
retryErrorN :: MonadError e m => Int -> (Int -> m a) -> m a #
Retries the given action up to n
times until it succeeds.
If all actions fail, the error of the last one is returned.
The action is always run at least once, even if n
is less than 1.