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

Copyright(c) 2007 Magnus Therning, (c) 2015 KONISHI Yohsuke
LicenseBSD-style (see the file LICENSE)
Maintainerocean0yohsuke@gmail.com
Stabilityexperimental
Portability---
Safe HaskellNone
LanguageHaskell2010

DeepControl.Monad.Trans.Identity

Contents

Description

This module enables you to deal with deep monads in any monad-transformer.

Synopsis

Level-1

Level-2

lift functions

mapIdentityT2 :: (m1 (m2 a) -> n1 (n2 b)) -> IdentityT2 m1 m2 a -> IdentityT2 n1 n2 b Source

liftCallCC2 :: CallCC2 m1 m2 a b -> CallCC (IdentityT2 m1 m2) a b Source

liftCatch2 :: Catch2 e m1 m2 a -> Catch e (IdentityT2 m1 m2) a Source

Level-3

newtype IdentityT3 f1 f2 f3 a Source

Constructors

IdentityT3 

Fields

runIdentityT3 :: f1 (f2 (f3 a))
 

Instances

MonadTransCover3 IdentityT3 Source 
MonadTransFold3 IdentityT3 Source 
MonadTrans3Down IdentityT3 Source 
MonadTrans3 IdentityT3 Source 
(Monad m1, Monad m2, Commutative m2, Monad m3, Commutative m3) => Monad (IdentityT3 m1 m2 m3) Source 
(Functor f1, Functor f2, Functor f3) => Functor (IdentityT3 f1 f2 f3) Source 
(Applicative m1, Applicative m2, Applicative m3) => Applicative (IdentityT3 m1 m2 m3) Source 
(Foldable f1, Foldable f2, Foldable f3) => Foldable (IdentityT3 f1 f2 f3) Source 
(Traversable f1, Traversable f2, Traversable f3) => Traversable (IdentityT3 f1 f2 f3) Source 
(Alternative m1, Alternative m2, Alternative m3) => Alternative (IdentityT3 m1 m2 m3) Source 
(MonadPlus m1, Alternative m2, Monad m2, Commutative m2, Alternative m3, Monad m3, Commutative m3) => MonadPlus (IdentityT3 m1 m2 m3) Source 
(MonadIO m1, Monad m1, Monad m2, Commutative m2, Monad m3, Commutative m3) => MonadIO (IdentityT3 m1 m2 m3) Source 
(Commutative f1, Commutative f2, Commutative f3) => Commutative (IdentityT3 f1 f2 f3) Source 
Eq (f1 (f2 (f3 a))) => Eq (IdentityT3 f1 f2 f3 a) Source 
Ord (f1 (f2 (f3 a))) => Ord (IdentityT3 f1 f2 f3 a) Source 
Read (f1 (f2 (f3 a))) => Read (IdentityT3 f1 f2 f3 a) Source 
Show (f1 (f2 (f3 a))) => Show (IdentityT3 f1 f2 f3 a) Source 
type Trans3Down IdentityT3 = IdentityT2 Source 

lift functions

mapIdentityT3 :: (m1 (m2 (m3 a)) -> n1 (n2 (n3 b))) -> IdentityT3 m1 m2 m3 a -> IdentityT3 n1 n2 n3 b Source

liftCallCC3 :: CallCC3 m1 m2 m3 a b -> CallCC (IdentityT3 m1 m2 m3) a b Source

liftCatch3 :: Catch3 e m1 m2 m3 a -> Catch e (IdentityT3 m1 m2 m3) a Source

Level-4

newtype IdentityT4 f1 f2 f3 f4 a Source

Constructors

IdentityT4 

Fields

runIdentityT4 :: f1 (f2 (f3 (f4 a)))
 

Instances

MonadTransCover4 IdentityT4 Source 
MonadTransFold4 IdentityT4 Source 
MonadTrans4Down IdentityT4 Source 
MonadTrans4 IdentityT4 Source 
(Monad m1, Monad m2, Commutative m2, Monad m3, Commutative m3, Monad m4, Commutative m4) => Monad (IdentityT4 m1 m2 m3 m4) Source 
(Functor f1, Functor f2, Functor f3, Functor f4) => Functor (IdentityT4 f1 f2 f3 f4) Source 
(Applicative m1, Applicative m2, Applicative m3, Applicative m4) => Applicative (IdentityT4 m1 m2 m3 m4) Source 
(Foldable f1, Foldable f2, Foldable f3, Foldable f4) => Foldable (IdentityT4 f1 f2 f3 f4) Source 
(Traversable f1, Traversable f2, Traversable f3, Traversable f4) => Traversable (IdentityT4 f1 f2 f3 f4) Source 
(Alternative m1, Alternative m2, Alternative m3, Alternative m4) => Alternative (IdentityT4 m1 m2 m3 m4) Source 
(MonadPlus m1, Alternative m2, Monad m2, Commutative m2, Alternative m3, Monad m3, Commutative m3, Alternative m4, Monad m4, Commutative m4) => MonadPlus (IdentityT4 m1 m2 m3 m4) Source 
(MonadIO m1, Monad m1, Monad m2, Commutative m2, Monad m3, Commutative m3, Monad m4, Commutative m4) => MonadIO (IdentityT4 m1 m2 m3 m4) Source 
(Commutative f1, Commutative f2, Commutative f3, Commutative f4) => Commutative (IdentityT4 f1 f2 f3 f4) Source 
Eq (f1 (f2 (f3 (f4 a)))) => Eq (IdentityT4 f1 f2 f3 f4 a) Source 
Ord (f1 (f2 (f3 (f4 a)))) => Ord (IdentityT4 f1 f2 f3 f4 a) Source 
Read (f1 (f2 (f3 (f4 a)))) => Read (IdentityT4 f1 f2 f3 f4 a) Source 
Show (f1 (f2 (f3 (f4 a)))) => Show (IdentityT4 f1 f2 f3 f4 a) Source 
type Trans4Down IdentityT4 = IdentityT3 Source 

lift functions

mapIdentityT4 :: (m1 (m2 (m3 (m4 a))) -> n1 (n2 (n3 (n4 b)))) -> IdentityT4 m1 m2 m3 m4 a -> IdentityT4 n1 n2 n3 n4 b Source

liftCallCC4 :: CallCC4 m1 m2 m3 m4 a b -> CallCC (IdentityT4 m1 m2 m3 m4) a b Source

liftCatch4 :: Catch4 e m1 m2 m3 m4 a -> Catch e (IdentityT4 m1 m2 m3 m4) a Source

Level-5

newtype IdentityT5 f1 f2 f3 f4 f5 a Source

Constructors

IdentityT5 

Fields

runIdentityT5 :: f1 (f2 (f3 (f4 (f5 a))))
 

Instances

MonadTransCover5 IdentityT5 Source 
MonadTransFold5 IdentityT5 Source 
MonadTrans5Down IdentityT5 Source 
MonadTrans5 IdentityT5 Source 
(Monad m1, Monad m2, Commutative m2, Monad m3, Commutative m3, Monad m4, Commutative m4, Monad m5, Commutative m5) => Monad (IdentityT5 m1 m2 m3 m4 m5) Source 
(Functor f1, Functor f2, Functor f3, Functor f4, Functor f5) => Functor (IdentityT5 f1 f2 f3 f4 f5) Source 
(Applicative m1, Applicative m2, Applicative m3, Applicative m4, Applicative m5) => Applicative (IdentityT5 m1 m2 m3 m4 m5) Source 
(Foldable f1, Foldable f2, Foldable f3, Foldable f4, Foldable f5) => Foldable (IdentityT5 f1 f2 f3 f4 f5) Source 
(Traversable f1, Traversable f2, Traversable f3, Traversable f4, Traversable f5) => Traversable (IdentityT5 f1 f2 f3 f4 f5) Source 
(Alternative m1, Alternative m2, Alternative m3, Alternative m4, Alternative m5) => Alternative (IdentityT5 m1 m2 m3 m4 m5) Source 
(MonadPlus m1, Alternative m2, Monad m2, Commutative m2, Alternative m3, Monad m3, Commutative m3, Alternative m4, Monad m4, Commutative m4, Alternative m5, Monad m5, Commutative m5) => MonadPlus (IdentityT5 m1 m2 m3 m4 m5) Source 
(MonadIO m1, Monad m1, Monad m2, Commutative m2, Monad m3, Commutative m3, Monad m4, Commutative m4, Monad m5, Commutative m5) => MonadIO (IdentityT5 m1 m2 m3 m4 m5) Source 
(Commutative f1, Commutative f2, Commutative f3, Commutative f4, Commutative f5) => Commutative (IdentityT5 f1 f2 f3 f4 f5) Source 
Eq (f1 (f2 (f3 (f4 (f5 a))))) => Eq (IdentityT5 f1 f2 f3 f4 f5 a) Source 
Ord (f1 (f2 (f3 (f4 (f5 a))))) => Ord (IdentityT5 f1 f2 f3 f4 f5 a) Source 
Read (f1 (f2 (f3 (f4 (f5 a))))) => Read (IdentityT5 f1 f2 f3 f4 f5 a) Source 
Show (f1 (f2 (f3 (f4 (f5 a))))) => Show (IdentityT5 f1 f2 f3 f4 f5 a) Source 
type Trans5Down IdentityT5 = IdentityT4 Source 

lift functions

mapIdentityT5 :: (m1 (m2 (m3 (m4 (m5 a)))) -> n1 (n2 (n3 (n4 (n5 b))))) -> IdentityT5 m1 m2 m3 m4 m5 a -> IdentityT5 n1 n2 n3 n4 n5 b Source

liftCallCC5 :: CallCC5 m1 m2 m3 m4 m5 a b -> CallCC (IdentityT5 m1 m2 m3 m4 m5) a b Source

liftCatch5 :: Catch5 e m1 m2 m3 m4 m5 a -> Catch e (IdentityT5 m1 m2 m3 m4 m5) a Source