Copyright | (c) Anton Gushcha, 2016 |
---|---|
License | BSD3 |
Maintainer | ncrashed@gmail.com |
Stability | experimental |
Portability | POSIX |
Safe Haskell | None |
Language | Haskell2010 |
Game.GoreAndAsh.LambdaCube.Module
Contents
Description
- newtype LambdaCubeT s m a = LambdaCubeT {
- runLambdaCubeT :: StateT (LambdaCubeState s) m a
Documentation
newtype LambdaCubeT s m a Source #
Monad transformer of the core module.
s
- - State of next core module in modules chain;
m
- - Next monad in modules monad stack;
a
- - Type of result value;
How to embed module:
type AppStack = ModuleStack [LambdaCubeT, ... other modules ... ] IO newtype AppMonad a = AppMonad (AppStack a) deriving (Functor, Applicative, Monad, MonadFix, MonadIO, MonadThrow, MonadCatch, MonadLambdaCube)
The module is not pure within first phase (see ModuleStack
docs), therefore only IO
can be used as end monad.
Constructors
LambdaCubeT | |
Fields
|
Instances
MonadTrans (LambdaCubeT s) Source # | |
Monad m => MonadState (LambdaCubeState s) (LambdaCubeT s m) Source # | |
Monad m => Monad (LambdaCubeT s m) Source # | |
Functor m => Functor (LambdaCubeT s m) Source # | |
MonadFix m => MonadFix (LambdaCubeT s m) Source # | |
Monad m => Applicative (LambdaCubeT s m) Source # | |
MonadIO m => MonadIO (LambdaCubeT s m) Source # | |
MonadMask m => MonadMask (LambdaCubeT s m) Source # | |
MonadThrow m => MonadThrow (LambdaCubeT s m) Source # | |
MonadCatch m => MonadCatch (LambdaCubeT s m) Source # | |
(MonadIO m, MonadThrow m) => MonadLambdaCube (LambdaCubeT s m) Source # | |
type ModuleState (LambdaCubeT s m) Source # | |
Orphan instances
(MonadIO m, MonadThrow m, GameModule m s) => GameModule (LambdaCubeT s m) (LambdaCubeState s) Source # | |