| Safe Haskell | None |
|---|---|
| Language | GHC2021 |
Control.Monad.Ology.Specific.StackT
Synopsis
- witTransStackDict :: forall cm (tt :: [TransKind]) (m :: Type -> Type). cm m => ListType (Compose Dict (TransConstraint cm)) tt -> Dict (cm (ApplyStack tt m))
- type IsStack (ct :: TransKind -> Constraint) = Is (ListType (Compose Dict ct))
- transStackDict :: forall cm (tt :: [TransKind]) (m :: Type -> Type). (IsStack (TransConstraint cm) tt, cm m) => Dict (cm (ApplyStack tt m))
- newtype StackT (tt :: [TransKind]) (m :: Type -> Type) a = MkStackT {
- unStackT :: ApplyStack tt m a
- stackLift :: forall (tt :: [TransKind]) (m :: Type -> Type). (IsStack (TransConstraint Monad) tt, IsStack MonadTrans tt, Monad m) => m --> ApplyStack tt m
- stackHoist :: forall (tt :: [TransKind]) (ma :: Type -> Type) (mb :: Type -> Type). (MonadTransStackTunnel tt, Monad ma, Monad mb) => (ma --> mb) -> ApplyStack tt ma --> ApplyStack tt mb
- class (MonadTransTunnel t, c (Tunnel t)) => WithTunnelConstraint (c :: (Type -> Type) -> Constraint) (t :: TransKind)
- type MonadTransStackTunnel (tt :: [TransKind]) = (IsStack (TransConstraint Monad) tt, IsStack MonadTransTunnel tt, IsStack MonadTrans tt, IsStack (WithTunnelConstraint Functor) tt, IsStack (WithTunnelConstraint Applicative) tt, IsStack (WithTunnelConstraint Monad) tt, IsStack (WithTunnelConstraint Traversable) tt, IsStack (WithTunnelConstraint MonadInner) tt)
- transStackExcept :: forall (tt :: [TransKind]) (m :: Type -> Type) e a. (MonadTransStackTunnel tt, Monad m) => ApplyStack tt (ExceptT e m) a -> ApplyStack tt m (Either e a)
- stackUnderliftIO :: forall (tt :: [TransKind]) (m :: Type -> Type). (MonadTransStackTunnel tt, MonadIO m) => ApplyStack tt IO --> ApplyStack tt m
- stackBackHoist :: forall (tt :: [TransKind]) (ma :: Type -> Type) (mb :: Type -> Type). (MonadTransStackUnlift tt, Monad ma, Monad mb) => (ma -/-> mb) -> ApplyStack tt ma -/-> ApplyStack tt mb
- type MonadTransStackUnlift (tt :: [TransKind]) = (IsStack (TransConstraint MonadFail) tt, IsStack (TransConstraint MonadIO) tt, IsStack (TransConstraint MonadFix) tt, IsStack (TransConstraint MonadTunnelIO) tt, IsStack (TransConstraint MonadUnliftIO) tt, MonadTransStackTunnel tt, IsStack (WithTunnelConstraint MonadExtract) tt, IsStack MonadTransUnlift tt)
- concatMonadTransStackUnliftDict :: forall (tt1 :: [TransKind]) (tt2 :: [TransKind]). (MonadTransStackUnlift tt1, MonadTransStackUnlift tt2) => Dict (MonadTransStackUnlift (Concat tt1 tt2))
- stackLiftWithUnlift :: forall (tt :: [TransKind]) (m :: Type -> Type). (MonadTransStackUnlift tt, MonadTunnelIO m) => m -/-> ApplyStack tt m
- stackConcatFst :: forall (tt1 :: [TransKind]) (tt2 :: [TransKind]) (m :: Type -> Type). (MonadTransStackUnlift tt1, MonadTransStackUnlift tt2, Monad m) => ApplyStack tt1 m --> ApplyStack (Concat tt1 tt2) m
- stackConcatSnd :: forall (tt1 :: [TransKind]) (tt2 :: [TransKind]) (m :: Type -> Type). (MonadTransStackUnlift tt1, MonadTransStackUnlift tt2, Monad m) => ApplyStack tt2 m --> ApplyStack (Concat tt1 tt2) m
- stackCommute :: forall (tta :: [TransKind]) (ttb :: [TransKind]) (m :: Type -> Type) r. (MonadTransStackUnlift tta, MonadTransStackUnlift ttb, MonadTunnelIO m) => ApplyStack tta (ApplyStack ttb m) r -> ApplyStack ttb (ApplyStack tta m) r
- transStackConcatRefl :: forall (tt1 :: [TransKind]) (tt2 :: [TransKind]) (m :: Type -> Type). MonadTransStackUnlift tt1 => ApplyStack (Concat tt1 tt2) m :~: ApplyStack tt1 (ApplyStack tt2 m)
- type StackUnlift (tt :: [TransKind]) = forall (m :: Type -> Type). MonadUnliftIO m => ApplyStack tt m --> m
- newtype WStackUnlift (tt :: [TransKind]) = MkWStackUnlift {
- unWStackUnlift :: StackUnlift tt
- consWStackUnlift :: forall (t :: TransKind) (tt :: [TransKind]). IsStack (TransConstraint MonadUnliftIO) tt => WUnlift MonadUnliftIO t -> WStackUnlift tt -> WStackUnlift (t ': tt)
- stackLiftWithStackUnlift :: forall (tt :: [TransKind]) m r. (MonadTransStackUnlift tt, MonadIO m) => (StackUnlift tt -> m r) -> ApplyStack tt m r
Documentation
witTransStackDict :: forall cm (tt :: [TransKind]) (m :: Type -> Type). cm m => ListType (Compose Dict (TransConstraint cm)) tt -> Dict (cm (ApplyStack tt m)) Source #
transStackDict :: forall cm (tt :: [TransKind]) (m :: Type -> Type). (IsStack (TransConstraint cm) tt, cm m) => Dict (cm (ApplyStack tt m)) Source #
newtype StackT (tt :: [TransKind]) (m :: Type -> Type) a Source #
A monad transformer that is the composition of a list of monad transformers.
Constructors
| MkStackT | |
Fields
| |
Instances
stackLift :: forall (tt :: [TransKind]) (m :: Type -> Type). (IsStack (TransConstraint Monad) tt, IsStack MonadTrans tt, Monad m) => m --> ApplyStack tt m Source #
stackHoist :: forall (tt :: [TransKind]) (ma :: Type -> Type) (mb :: Type -> Type). (MonadTransStackTunnel tt, Monad ma, Monad mb) => (ma --> mb) -> ApplyStack tt ma --> ApplyStack tt mb Source #
class (MonadTransTunnel t, c (Tunnel t)) => WithTunnelConstraint (c :: (Type -> Type) -> Constraint) (t :: TransKind) Source #
Instances
| (MonadTransTunnel t, c (Tunnel t)) => WithTunnelConstraint c t Source # | |
Defined in Control.Monad.Ology.Specific.StackT | |
type MonadTransStackTunnel (tt :: [TransKind]) = (IsStack (TransConstraint Monad) tt, IsStack MonadTransTunnel tt, IsStack MonadTrans tt, IsStack (WithTunnelConstraint Functor) tt, IsStack (WithTunnelConstraint Applicative) tt, IsStack (WithTunnelConstraint Monad) tt, IsStack (WithTunnelConstraint Traversable) tt, IsStack (WithTunnelConstraint MonadInner) tt) Source #
transStackExcept :: forall (tt :: [TransKind]) (m :: Type -> Type) e a. (MonadTransStackTunnel tt, Monad m) => ApplyStack tt (ExceptT e m) a -> ApplyStack tt m (Either e a) Source #
stackUnderliftIO :: forall (tt :: [TransKind]) (m :: Type -> Type). (MonadTransStackTunnel tt, MonadIO m) => ApplyStack tt IO --> ApplyStack tt m Source #
stackBackHoist :: forall (tt :: [TransKind]) (ma :: Type -> Type) (mb :: Type -> Type). (MonadTransStackUnlift tt, Monad ma, Monad mb) => (ma -/-> mb) -> ApplyStack tt ma -/-> ApplyStack tt mb Source #
type MonadTransStackUnlift (tt :: [TransKind]) = (IsStack (TransConstraint MonadFail) tt, IsStack (TransConstraint MonadIO) tt, IsStack (TransConstraint MonadFix) tt, IsStack (TransConstraint MonadTunnelIO) tt, IsStack (TransConstraint MonadUnliftIO) tt, MonadTransStackTunnel tt, IsStack (WithTunnelConstraint MonadExtract) tt, IsStack MonadTransUnlift tt) Source #
concatMonadTransStackUnliftDict :: forall (tt1 :: [TransKind]) (tt2 :: [TransKind]). (MonadTransStackUnlift tt1, MonadTransStackUnlift tt2) => Dict (MonadTransStackUnlift (Concat tt1 tt2)) Source #
stackLiftWithUnlift :: forall (tt :: [TransKind]) (m :: Type -> Type). (MonadTransStackUnlift tt, MonadTunnelIO m) => m -/-> ApplyStack tt m Source #
stackConcatFst :: forall (tt1 :: [TransKind]) (tt2 :: [TransKind]) (m :: Type -> Type). (MonadTransStackUnlift tt1, MonadTransStackUnlift tt2, Monad m) => ApplyStack tt1 m --> ApplyStack (Concat tt1 tt2) m Source #
stackConcatSnd :: forall (tt1 :: [TransKind]) (tt2 :: [TransKind]) (m :: Type -> Type). (MonadTransStackUnlift tt1, MonadTransStackUnlift tt2, Monad m) => ApplyStack tt2 m --> ApplyStack (Concat tt1 tt2) m Source #
stackCommute :: forall (tta :: [TransKind]) (ttb :: [TransKind]) (m :: Type -> Type) r. (MonadTransStackUnlift tta, MonadTransStackUnlift ttb, MonadTunnelIO m) => ApplyStack tta (ApplyStack ttb m) r -> ApplyStack ttb (ApplyStack tta m) r Source #
transStackConcatRefl :: forall (tt1 :: [TransKind]) (tt2 :: [TransKind]) (m :: Type -> Type). MonadTransStackUnlift tt1 => ApplyStack (Concat tt1 tt2) m :~: ApplyStack tt1 (ApplyStack tt2 m) Source #
type StackUnlift (tt :: [TransKind]) = forall (m :: Type -> Type). MonadUnliftIO m => ApplyStack tt m --> m Source #
newtype WStackUnlift (tt :: [TransKind]) Source #
Constructors
| MkWStackUnlift | |
Fields
| |
consWStackUnlift :: forall (t :: TransKind) (tt :: [TransKind]). IsStack (TransConstraint MonadUnliftIO) tt => WUnlift MonadUnliftIO t -> WStackUnlift tt -> WStackUnlift (t ': tt) Source #
stackLiftWithStackUnlift :: forall (tt :: [TransKind]) m r. (MonadTransStackUnlift tt, MonadIO m) => (StackUnlift tt -> m r) -> ApplyStack tt m r Source #