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.