-- Hoogle documentation, generated by Haddock
-- See Hoogle, http://www.haskell.org/hoogle/
-- | To be written.
--
-- Filtering and folding over arbitrary MonadPlus instances. This
-- package generalizes many common stream operations such as
-- filter, catMaybes etc.
@package monadplus
@version 1.1
module Control.Monad.Plus
-- | Monads that also support choice and failure.
class Monad m => MonadPlus (m :: * -> *)
mzero :: MonadPlus m => m a
mplus :: MonadPlus m => m a -> m a -> m a
-- | This generalizes the list-based concat function.
msum :: MonadPlus m => [m a] -> m a
-- | Direct MonadPlus equivalent of filter
-- filter = (mfilter:: (a -> Bool) -> [a] ->
-- [a] applicable to any MonadPlus, for example mfilter
-- odd (Just 1) == Just 1 mfilter odd (Just 2) == Nothing
mfilter :: MonadPlus m => (a -> Bool) -> m a -> m a
-- | Generalizes the remove function.
mremove :: MonadPlus m => (a -> Bool) -> m a -> m a
-- | Generalizes the partition function.
mpartition :: MonadPlus m => (a -> Bool) -> m a -> (m a, m a)
-- | Translate maybe to an arbitrary MonadPlus type. Generalizes the
-- maybeToList function.
mfromMaybe :: MonadPlus m => Maybe a -> m a
-- | Pass through Just occurrences. Generalizes the
-- catMaybes function.
mcatMaybes :: MonadPlus m => m (Maybe a) -> m a
-- | Modify or discard a value. Generalizes the mapMaybe function.
mmapMaybe :: MonadPlus m => (a -> Maybe b) -> m a -> m b