state-plus-0.1.3: MonadPlus for StateT

Copyright(c) Boris Sukholitko 2012
LicenseBSD3
Maintainerboriss@gmail.com
Stabilityexperimental
Safe HaskellNone
LanguageHaskell98

Control.Monad.Trans.State.Plus

Contents

Description

MonadPlus with left catch (MonadOr) for StateT.

Synopsis

The StatePlusT monad transformer

data StatePlusT s m a Source #

StatePlusT behaves similar to StateT monad transformer

Instances

Monad m => MonadState s (StatePlusT s m) Source # 

Methods

get :: StatePlusT s m s #

put :: s -> StatePlusT s m () #

state :: (s -> (a, s)) -> StatePlusT s m a #

MonadTrans (StatePlusT s) Source # 

Methods

lift :: Monad m => m a -> StatePlusT s m a #

Monad m => Monad (StatePlusT s m) Source # 

Methods

(>>=) :: StatePlusT s m a -> (a -> StatePlusT s m b) -> StatePlusT s m b #

(>>) :: StatePlusT s m a -> StatePlusT s m b -> StatePlusT s m b #

return :: a -> StatePlusT s m a #

fail :: String -> StatePlusT s m a #

Functor m => Functor (StatePlusT s m) Source # 

Methods

fmap :: (a -> b) -> StatePlusT s m a -> StatePlusT s m b #

(<$) :: a -> StatePlusT s m b -> StatePlusT s m a #

(Monad m, Functor m) => Applicative (StatePlusT s m) Source # 

Methods

pure :: a -> StatePlusT s m a #

(<*>) :: StatePlusT s m (a -> b) -> StatePlusT s m a -> StatePlusT s m b #

(*>) :: StatePlusT s m a -> StatePlusT s m b -> StatePlusT s m b #

(<*) :: StatePlusT s m a -> StatePlusT s m b -> StatePlusT s m a #

MonadIO m => MonadIO (StatePlusT s m) Source # 

Methods

liftIO :: IO a -> StatePlusT s m a #

(Monad m, Functor m) => Alternative (StatePlusT s m) Source # 

Methods

empty :: StatePlusT s m a #

(<|>) :: StatePlusT s m a -> StatePlusT s m a -> StatePlusT s m a #

some :: StatePlusT s m a -> StatePlusT s m [a] #

many :: StatePlusT s m a -> StatePlusT s m [a] #

Monad m => MonadPlus (StatePlusT s m) Source # 

Methods

mzero :: StatePlusT s m a #

mplus :: StatePlusT s m a -> StatePlusT s m a -> StatePlusT s m a #

runStatePlusT :: Monad m => StatePlusT s m a -> s -> m (Maybe a, s) Source #

Evaluate StatePlusT monad. In difference from runStateT it returns Nothing if mzero has been encountered. Just a otherwise.

execStatePlusT :: Monad m => StatePlusT s m a -> s -> m s Source #

Execute StatePlusT monad returning resulting state

evalStatePlusT :: Monad m => StatePlusT s m a -> s -> m (Maybe a) Source #

Evaluate StatePlusT monad returning resulting value. See above for the semantics.