deepcontrol-0.3.3.0: Provide more deeper level style of programming than the usual Control.xxx modules express

Copyright(c) Andy Gill 2001, (c) Oregon Graduate Institute of Science and Technology, 2001, (C) 2015 KONISHI Yohsuke,
LicenseBSD-style (see the file LICENSE)
Maintainerocean0yohsuke@gmail.com
Stabilityexperimental
Portability---
Safe HaskellSafe
LanguageHaskell2010

DeepControl.Monad.Trans.State

Contents

Description

This module extended State Monad of mtl(monad-transformer-library).

Synopsis

Documentation

Level-2

newtype StateT2 s m1 m2 a Source

Constructors

StateT2 

Fields

runStateT2 :: s -> m1 (m2 (a, s))
 

Instances

evalStateT2 :: (Monad m1, Monad2 m2) => StateT2 s m1 m2 a -> s -> m1 (m2 a) Source

execStateT2 :: (Monad m1, Monad2 m2) => StateT2 s m1 m2 a -> s -> m1 (m2 s) Source

mapStateT2 :: (m1 (m2 (a, s)) -> n1 (n2 (b, s))) -> StateT2 s m1 m2 a -> StateT2 s n1 n2 b Source

withStateT2 :: (s -> s) -> StateT2 s m1 m2 a -> StateT2 s m1 m2 a Source

lift functions

liftCatch2 :: Catch2 e m1 m2 (a, s) -> Catch e (StateT2 s m1 m2) a Source

liftListen2 :: (Monad m1, Monad2 m2) => Listen2 w m1 m2 (a, s) -> Listen w (StateT2 s m1 m2) a Source

liftPass2 :: (Monad m1, Monad2 m2) => Pass2 w m1 m2 (a, s) -> Pass w (StateT2 s m1 m2) a Source

Level-3

newtype StateT3 s m1 m2 m3 a Source

Constructors

StateT3 

Fields

runStateT3 :: s -> m1 (m2 (m3 (a, s)))
 

Instances

(Monad m1, Monad2 m2, Monad3 m3) => MonadState s (StateT3 s m1 m2 m3) Source 
MonadTransCover3 (StateT3 s) Source 
MonadTransFold3 (StateT3 s) Source 
MonadTrans3Down (StateT3 s) Source 
MonadTrans3 (StateT3 s) Source 
(Monad m1, Monad2 m2, Monad3 m3) => Monad (StateT3 s m1 m2 m3) Source 
(Functor m1, Functor m2, Functor m3) => Functor (StateT3 s m1 m2 m3) Source 
(Monad m1, Monad2 m2, Monad3 m3) => Applicative (StateT3 s m1 m2 m3) Source 
(MonadPlus m1, MonadPlus m2, MonadPlus m3, Monad m1, Monad2 m2, Monad3 m3) => Alternative (StateT3 s m1 m2 m3) Source 
(MonadPlus m1, MonadPlus m2, MonadPlus m3, Monad m1, Monad2 m2, Monad3 m3) => MonadPlus (StateT3 s m1 m2 m3) Source 
(MonadIO m1, Monad m1, Monad2 m2, Monad3 m3) => MonadIO (StateT3 s m1 m2 m3) Source 
type Trans3Down (StateT3 s) = StateT2 s Source 

evalStateT3 :: (Monad m1, Monad2 m2, Monad3 m3) => StateT3 s m1 m2 m3 a -> s -> m1 (m2 (m3 a)) Source

execStateT3 :: (Monad m1, Monad2 m2, Monad3 m3) => StateT3 s m1 m2 m3 a -> s -> m1 (m2 (m3 s)) Source

mapStateT3 :: (m1 (m2 (m3 (a, s))) -> n1 (n2 (n3 (b, s)))) -> StateT3 s m1 m2 m3 a -> StateT3 s n1 n2 n3 b Source

withStateT3 :: (s -> s) -> StateT3 s m1 m2 m3 a -> StateT3 s m1 m2 m3 a Source

lift functions

liftCatch3 :: Catch3 e m1 m2 m3 (a, s) -> Catch e (StateT3 s m1 m2 m3) a Source

liftListen3 :: (Monad m1, Monad2 m2, Monad3 m3) => Listen3 w m1 m2 m3 (a, s) -> Listen w (StateT3 s m1 m2 m3) a Source

liftPass3 :: (Monad m1, Monad2 m2, Monad3 m3) => Pass3 w m1 m2 m3 (a, s) -> Pass w (StateT3 s m1 m2 m3) a Source