-- Hoogle documentation, generated by Haddock
-- See Hoogle, http://www.haskell.org/hoogle/


-- | MonadPlus for StateT
--   
--   Implements MonadPlus with left catch (MonadOr) for StateT.
@package state-plus
@version 0.1.3


-- | MonadPlus with left catch (MonadOr) for StateT.
module Control.Monad.Trans.State.Plus

-- | StatePlusT behaves similar to StateT monad transformer
data StatePlusT s m a

-- | Evaluate StatePlusT monad. In difference from runStateT it returns
--   <tt>Nothing</tt> if <tt>mzero</tt> has been encountered. <tt>Just
--   a</tt> otherwise.
runStatePlusT :: Monad m => StatePlusT s m a -> s -> m (Maybe a, s)

-- | Execute StatePlusT monad returning resulting state
execStatePlusT :: Monad m => StatePlusT s m a -> s -> m s

-- | Evaluate StatePlusT monad returning resulting value. See above for the
--   semantics.
evalStatePlusT :: Monad m => StatePlusT s m a -> s -> m (Maybe a)
instance Control.Monad.IO.Class.MonadIO m => Control.Monad.IO.Class.MonadIO (Control.Monad.Trans.State.Plus.StatePlusT s m)
instance Control.Monad.Trans.Class.MonadTrans (Control.Monad.Trans.State.Plus.StatePlusT s)
instance GHC.Base.Functor m => GHC.Base.Functor (Control.Monad.Trans.State.Plus.StatePlusT s m)
instance GHC.Base.Monad m => GHC.Base.Monad (Control.Monad.Trans.State.Plus.StatePlusT s m)
instance (GHC.Base.Monad m, GHC.Base.Functor m) => GHC.Base.Applicative (Control.Monad.Trans.State.Plus.StatePlusT s m)
instance GHC.Base.Monad m => Control.Monad.State.Class.MonadState s (Control.Monad.Trans.State.Plus.StatePlusT s m)
instance GHC.Base.Monad m => GHC.Base.MonadPlus (Control.Monad.Trans.State.Plus.StatePlusT s m)
instance (GHC.Base.Monad m, GHC.Base.Functor m) => GHC.Base.Alternative (Control.Monad.Trans.State.Plus.StatePlusT s m)
