| Safe Haskell | Safe | 
|---|---|
| Language | Haskell2010 | 
Control.IMonad.Core
Contents
Description
Indexed Monads
I deviate from Conor's terminology, referring to his monads on indexed types as "indexed monads" and referring to his indexed monads as "restricted monads". This module provides "indexed monads".
Indexed monads generalize the traditional approach to parametrizing the
    initial and final states of ordinary monads.  The IMonad class does not
    require specifying a concrete index of kind k for the intermediate or
    final state of the bindI operation, permitting operations which may end in
    multiple possible states.
class IFunctor f where Source #
An endofunctor within the category of index-preserving functions
All instances must satisfy the functor laws:
fmapI id == id fmapI (f . g) == fmapI f . fmapI g
Minimal complete definition
class IFunctor m => IMonad m where Source #
An indexed monad
All instances must satisfy the monad laws:
returnI >?> f = f f >?> returnI = f (f >?> g) >?> h = f >?> (g >?> h)
Functions
(?>=) :: IMonad m => m a i -> (a :-> m b) -> m b i infixl 1 Source #
An infix bindI with arguments flipped