Safe Haskell | None |
---|---|

Language | Haskell2010 |

# Documentation

newtype Ix (m :: Type -> Type) i j a Source #

The free indexed monad generated from a monad `m`

. Users are not expected
to use `Ix`

directly, but to newtype over it, specializing the kinds of `i`

and `j`

as necessary.

GeneralizedNewtypeDeriving can be used to get the instances of `IxFunctor`

,
`IxPointed`

, `IxApplicative`

, `IxMonad`

, `IxMonadZero`

and `IxMonadPlus`

for
free.

## Instances

Functor m => IxFunctor (Ix m :: k -> k1 -> Type -> *) Source # | |

Defined in Control.Monad.Trans.Ix | |

Monad m => IxMonad (Ix m :: k -> k -> Type -> *) Source # | |

MonadPlus m => IxMonadZero (Ix m :: k -> k -> Type -> *) Source # | |

Defined in Control.Monad.Trans.Ix | |

MonadPlus m => IxMonadPlus (Ix m :: k -> k -> Type -> *) Source # | |

Applicative m => IxApplicative (Ix m :: k -> k -> Type -> *) Source # | |

Applicative m => IxPointed (Ix m :: k -> k -> Type -> *) Source # | |

Defined in Control.Monad.Trans.Ix | |

Monad m => Monad (Ix m i j) Source # | |

Functor m => Functor (Ix m i j) Source # | |

Applicative m => Applicative (Ix m i j) Source # | |

unsafeLiftIx :: m a -> Ix m i j a Source #

Lift an `m`

action into 'Ix m', changing the current index. `unsafeLiftIx`

is obviously unsafe due to the fact that it can arbitrarily change the
index.