Copyright | (C) 2024 Eitan Chatav |
---|---|
License | BSD 3-Clause License (see the file LICENSE) |
Maintainer | Eitan Chatav <eitan.chatav@gmail.com> |
Safe Haskell | Safe-Inferred |
Language | Haskell2010 |
An instance of the free indexed monad transformer.
Documentation
newtype FreeIx f i j m x Source #
Instances
IxMonadTransFree (FreeIx :: (k -> k -> Type -> Type) -> k -> k -> (Type -> Type) -> Type -> Type) Source # | |
Defined in Control.Monad.Trans.Indexed.Free.Wrap liftFreeIx :: forall f (m :: Type -> Type) (i :: k0) (j :: k0) x. (IxFunctor f, Monad m) => f i j x -> FreeIx f i j m x Source # hoistFreeIx :: forall f g (m :: Type -> Type) (i :: k0) (j :: k0) x. (IxFunctor f, IxFunctor g, Monad m) => (forall (i1 :: k0) (j1 :: k0) x1. f i1 j1 x1 -> g i1 j1 x1) -> FreeIx f i j m x -> FreeIx g i j m x Source # foldFreeIx :: forall f t (m :: Type -> Type) (i :: k0) (j :: k0) x. (IxFunctor f, IxMonadTrans t, Monad m) => (forall (i1 :: k0) (j1 :: k0) x1. f i1 j1 x1 -> t i1 j1 m x1) -> FreeIx f i j m x -> t i j m x Source # | |
IxFunctor f => IxMonadTrans (FreeIx f :: k -> k -> (Type -> Type) -> Type -> Type) Source # | |
Defined in Control.Monad.Trans.Indexed.Free.Wrap apIx :: forall (m :: Type -> Type) (i :: k0) (j :: k0) x y (k1 :: k0). Monad m => FreeIx f i j m (x -> y) -> FreeIx f j k1 m x -> FreeIx f i k1 m y Source # joinIx :: forall (m :: Type -> Type) (i :: k0) (j :: k0) (k1 :: k0) y. Monad m => FreeIx f i j m (FreeIx f j k1 m y) -> FreeIx f i k1 m y Source # bindIx :: forall (m :: Type -> Type) x (j :: k0) (k1 :: k0) y (i :: k0). Monad m => (x -> FreeIx f j k1 m y) -> FreeIx f i j m x -> FreeIx f i k1 m y Source # thenIx :: forall (m :: Type -> Type) (j :: k0) (k1 :: k0) y (i :: k0) x. Monad m => FreeIx f j k1 m y -> FreeIx f i j m x -> FreeIx f i k1 m y Source # andThenIx :: forall (m :: Type -> Type) y (j :: k0) (k1 :: k0) z x (i :: k0). Monad m => (y -> FreeIx f j k1 m z) -> (x -> FreeIx f i j m y) -> x -> FreeIx f i k1 m z Source # | |
(IxFunctor f, Monad m, i ~ j) => MonadFree (f i j) (FreeIx f i j m) Source # | |
Defined in Control.Monad.Trans.Indexed.Free.Wrap | |
(IxFunctor f, i ~ j) => MonadTrans (FreeIx f i j) Source # | |
Defined in Control.Monad.Trans.Indexed.Free.Wrap | |
(IxFunctor f, i ~ j, Monad m) => Applicative (FreeIx f i j m) Source # | |
Defined in Control.Monad.Trans.Indexed.Free.Wrap pure :: a -> FreeIx f i j m a # (<*>) :: FreeIx f i j m (a -> b) -> FreeIx f i j m a -> FreeIx f i j m b # liftA2 :: (a -> b -> c) -> FreeIx f i j m a -> FreeIx f i j m b -> FreeIx f i j m c # (*>) :: FreeIx f i j m a -> FreeIx f i j m b -> FreeIx f i j m b # (<*) :: FreeIx f i j m a -> FreeIx f i j m b -> FreeIx f i j m a # | |
(IxFunctor f, Monad m) => Functor (FreeIx f i j m) Source # | |
(IxFunctor f, i ~ j, Monad m) => Monad (FreeIx f i j m) Source # | |