Safe Haskell  None 

Language  Haskell2010 
Synopsis
 class (Monad m, Functor f) => MAction m f where
 mact :: m (f a) > f a
 newtype FreeMAction (m :: Type > Type) (f :: Type > Type) a = FreeMAction {
 runFreeMAction :: m (f a)
Documentation
class (Monad m, Functor f) => MAction m f where Source #
A monad action is an m
algebra parametrized over a functor f
.
This is direct translation of a monoid action in the monoidal category of
endofunctors with monoidal product: functor composition.
should be associative:
prop> mact
mact
. mact
= mact
. join
and unital:
prop> mact . return = id
There are monads which do not have any (safe) instances, like
.IO
Instances
Monad m => MAction m m Source #  
Defined in Control.Monad.Action  
(Monad m, Functor f) => MAction m (FreeMAction m f) Source #  
Defined in Control.Monad.Action mact :: m (FreeMAction m f a) > FreeMAction m f a Source #  
(Monad m, FreeAlgebra m, AlgebraType m d) => MAction m (Const d :: Type > Type) Source #  Every algebra 
(Pointed r, Functor f) => MAction ((>) r :: Type > Type) f Source #  You can use 
Defined in Control.Monad.Action 
newtype FreeMAction (m :: Type > Type) (f :: Type > Type) a Source #
Free algebra associated with the @MAction
constraint.
FreeMAction  
