monadology 0.3 → 0.4
raw patch · 24 files changed
+152/−153 lines, 24 filesdep ~basedep ~constraintsdep ~transformersPVP ok
version bump matches the API change (PVP)
Dependency ranges changed: base, constraints, transformers, witness
API changes (from Hackage documentation)
- Control.Monad.Ology.Data.Param: type Lens' a b = forall f. Functor f => (b -> f b) -> a -> f a
- Control.Monad.Ology.General.Coroutine: instance (Control.Monad.Ology.General.Trans.Unlift.MonadTransUnlift t, Control.Monad.Ology.General.Coroutine.MonadCoroutine m, Control.Monad.Ology.General.Trans.Tunnel.MonadTunnelIO m, GHC.Base.Monad (t m)) => Control.Monad.Ology.General.Coroutine.MonadCoroutine (t m)
- Control.Monad.Ology.General.Coroutine: type With (m :: k -> Type) (t :: Type) = forall (r :: k). (t -> m r) -> m r
- Control.Monad.Ology.General.Extract: instance Control.Monad.Ology.General.Extract.MonadExtract (Data.Either.Either Data.Void.Void)
- Control.Monad.Ology.General.Function: type Backraised ma mb = forall r. ((mb --> ma) -> ma r) -> mb r
- Control.Monad.Ology.General.Function: type Extract m = forall a. m a -> a
- Control.Monad.Ology.General.Function: type Raised p q = forall a. p a -> q a
- Control.Monad.Ology.General.Function: type ma -/-> mb = Backraised ma mb
- Control.Monad.Ology.Specific.ComposeT: instance (Control.Monad.Ology.General.Trans.Constraint.TransConstraint Control.Monad.Fail.MonadFail outerT, Control.Monad.Ology.General.Trans.Constraint.TransConstraint GHC.Base.Monad innerT, Control.Monad.Ology.General.Trans.Constraint.TransConstraint Control.Monad.Fail.MonadFail innerT) => Control.Monad.Ology.General.Trans.Constraint.TransConstraint Control.Monad.Fail.MonadFail (Control.Monad.Ology.Specific.ComposeT.ComposeT outerT innerT)
- Control.Monad.Ology.Specific.ComposeT: instance (Control.Monad.Ology.General.Trans.Constraint.TransConstraint Control.Monad.Fix.MonadFix outerT, Control.Monad.Ology.General.Trans.Constraint.TransConstraint GHC.Base.Monad innerT, Control.Monad.Ology.General.Trans.Constraint.TransConstraint Control.Monad.Fix.MonadFix innerT) => Control.Monad.Ology.General.Trans.Constraint.TransConstraint Control.Monad.Fix.MonadFix (Control.Monad.Ology.Specific.ComposeT.ComposeT outerT innerT)
- Control.Monad.Ology.Specific.ComposeT: instance (Control.Monad.Ology.General.Trans.Constraint.TransConstraint Control.Monad.IO.Class.MonadIO outerT, Control.Monad.Ology.General.Trans.Constraint.TransConstraint GHC.Base.Monad innerT, Control.Monad.Ology.General.Trans.Constraint.TransConstraint Control.Monad.IO.Class.MonadIO innerT) => Control.Monad.Ology.General.Trans.Constraint.TransConstraint Control.Monad.IO.Class.MonadIO (Control.Monad.Ology.Specific.ComposeT.ComposeT outerT innerT)
- Control.Monad.Ology.Specific.ComposeT: instance (Control.Monad.Ology.General.Trans.Constraint.TransConstraint GHC.Base.MonadPlus outerT, Control.Monad.Ology.General.Trans.Constraint.TransConstraint GHC.Base.Monad innerT, Control.Monad.Ology.General.Trans.Constraint.TransConstraint GHC.Base.MonadPlus innerT) => Control.Monad.Ology.General.Trans.Constraint.TransConstraint GHC.Base.MonadPlus (Control.Monad.Ology.Specific.ComposeT.ComposeT outerT innerT)
- Control.Monad.Ology.Specific.ContT: instance forall k (r :: k) (m :: k -> Type). Control.Monad.Ology.General.Cont.MonadCont (Control.Monad.Trans.Cont.ContT r m)
- Control.Monad.Ology.Specific.LifecycleT: type With (m :: k -> Type) (t :: Type) = forall (r :: k). (t -> m r) -> m r
- Control.Monad.Ology.Specific.StackT: instance (Control.Monad.Ology.Specific.StackT.IsStack (Control.Monad.Ology.General.Trans.Constraint.TransConstraint GHC.Base.Monad) tt, Control.Monad.Ology.Specific.StackT.IsStack (Control.Monad.Ology.General.Trans.Constraint.TransConstraint Control.Monad.Fail.MonadFail) tt, Control.Monad.Ology.Specific.StackT.IsStack Control.Monad.Trans.Class.MonadTrans tt) => Control.Monad.Ology.General.Trans.Constraint.TransConstraint Control.Monad.Fail.MonadFail (Control.Monad.Ology.Specific.StackT.StackT tt)
- Control.Monad.Ology.Specific.StackT: instance (Control.Monad.Ology.Specific.StackT.IsStack (Control.Monad.Ology.Specific.StackT.WithTunnelConstraint GHC.Base.Functor) tt, Control.Monad.Ology.Specific.StackT.IsStack (Control.Monad.Ology.Specific.StackT.WithTunnelConstraint Control.Monad.Ology.General.Inner.MonadInner) tt, Control.Monad.Ology.Specific.StackT.IsStack (Control.Monad.Ology.Specific.StackT.WithTunnelConstraint Control.Monad.Ology.General.Extract.MonadExtract) tt, Control.Monad.Ology.Specific.StackT.IsStack Control.Monad.Ology.General.Trans.Unlift.MonadTransUnlift tt) => Control.Monad.Ology.General.Extract.MonadExtract (Control.Monad.Ology.Specific.StackT.StackTunnel tt)
- Control.Monad.Ology.Specific.WithT: instance forall k (m :: k -> Type). GHC.Base.Applicative (Control.Monad.Ology.Specific.WithT.WithT m)
- Control.Monad.Ology.Specific.WithT: instance forall k (m :: k -> Type). GHC.Base.Functor (Control.Monad.Ology.Specific.WithT.WithT m)
- Control.Monad.Ology.Specific.WithT: instance forall k (m :: k -> Type). GHC.Base.Monad (Control.Monad.Ology.Specific.WithT.WithT m)
- Control.Monad.Ology.Specific.WithT: instance forall k a (m :: k -> Type). GHC.Base.Monoid a => GHC.Base.Monoid (Control.Monad.Ology.Specific.WithT.WithT m a)
- Control.Monad.Ology.Specific.WithT: instance forall k a (m :: k -> Type). GHC.Base.Semigroup a => GHC.Base.Semigroup (Control.Monad.Ology.Specific.WithT.WithT m a)
- Control.Monad.Ology.Specific.WriterT: instance GHC.Base.Monoid w => Control.Monad.Ology.General.Trans.Constraint.TransConstraint GHC.Base.Functor (Control.Monad.Trans.Writer.Lazy.WriterT w)
+ Control.Monad.Ology.Data.Param: paramAsks :: Monad m => Param m a -> (a -> b) -> m b
+ Control.Monad.Ology.Data.Param: type Lens' a b = forall (f :: Type -> Type). Functor f => b -> f b -> a -> f a
+ Control.Monad.Ology.Data.Ref: refPutRestore :: forall (m :: Type -> Type) a. MonadException m => Ref m a -> a -> m --> m
+ Control.Monad.Ology.General.Coroutine: instance (Control.Monad.Ology.General.Trans.Tunnel.MonadTransTunnel t, Control.Monad.Ology.General.Coroutine.MonadCoroutine m) => Control.Monad.Ology.General.Coroutine.MonadCoroutine (t m)
+ Control.Monad.Ology.General.Coroutine: type With (m :: k -> Type) t = forall (r :: k). () => t -> m r -> m r
+ Control.Monad.Ology.General.Exception: type family Exc (m :: Type -> Type)
+ Control.Monad.Ology.General.Extract: instance Control.Monad.Ology.General.Extract.MonadExtract (Data.Either.Either GHC.Base.Void)
+ Control.Monad.Ology.General.Function: type (ma :: k -> Type) -/-> (mb :: k -> Type) = Backraised ma mb
+ Control.Monad.Ology.General.Function: type Extract (m :: Type -> Type) = forall a. () => m a -> a
+ Control.Monad.Ology.General.Function: type Backraised (ma :: k -> Type) (mb :: k -> Type) = forall (r :: k). () => mb --> ma -> ma r -> mb r
+ Control.Monad.Ology.General.Trans.AskUnlift: ($dmaskUnlift) :: forall (m :: Type -> Type). (MonadTransAskUnlift t, Monad m) => t m (WUnlift Monad t)
+ Control.Monad.Ology.General.Trans.Tunnel: hoistWith :: forall t m1 m2 f r. (MonadTransTunnel t, Traversable f, Monad m1, Monad m2) => (forall a. () => m1 a -> m2 (f a)) -> t m1 r -> t m2 (f r)
+ Control.Monad.Ology.General.Trans.Tunnel: hoistWithIO :: (MonadTunnelIO m, Traversable f) => (forall a. () => IO a -> IO (f a)) -> m r -> m (f r)
+ Control.Monad.Ology.Specific.ComposeT: instance (Control.Monad.Ology.General.Trans.Constraint.TransConstraint Control.Monad.Fail.MonadFail outerT, Control.Monad.Ology.General.Trans.Constraint.TransConstraint Control.Monad.Fail.MonadFail innerT) => Control.Monad.Ology.General.Trans.Constraint.TransConstraint Control.Monad.Fail.MonadFail (Control.Monad.Ology.Specific.ComposeT.ComposeT outerT innerT)
+ Control.Monad.Ology.Specific.ComposeT: instance (Control.Monad.Ology.General.Trans.Constraint.TransConstraint Control.Monad.Fix.MonadFix outerT, Control.Monad.Ology.General.Trans.Constraint.TransConstraint Control.Monad.Fix.MonadFix innerT) => Control.Monad.Ology.General.Trans.Constraint.TransConstraint Control.Monad.Fix.MonadFix (Control.Monad.Ology.Specific.ComposeT.ComposeT outerT innerT)
+ Control.Monad.Ology.Specific.ComposeT: instance (Control.Monad.Ology.General.Trans.Constraint.TransConstraint Control.Monad.IO.Class.MonadIO outerT, Control.Monad.Ology.General.Trans.Constraint.TransConstraint Control.Monad.IO.Class.MonadIO innerT) => Control.Monad.Ology.General.Trans.Constraint.TransConstraint Control.Monad.IO.Class.MonadIO (Control.Monad.Ology.Specific.ComposeT.ComposeT outerT innerT)
+ Control.Monad.Ology.Specific.ComposeT: instance (Control.Monad.Ology.General.Trans.Constraint.TransConstraint GHC.Base.MonadPlus outerT, Control.Monad.Ology.General.Trans.Constraint.TransConstraint GHC.Base.MonadPlus innerT) => Control.Monad.Ology.General.Trans.Constraint.TransConstraint GHC.Base.MonadPlus (Control.Monad.Ology.Specific.ComposeT.ComposeT outerT innerT)
+ Control.Monad.Ology.Specific.ContT: instance forall k (r :: k) (m :: k -> GHC.Types.Type). Control.Monad.Ology.General.Cont.MonadCont (Control.Monad.Trans.Cont.ContT r m)
+ Control.Monad.Ology.Specific.ExceptT: finallyE :: forall (m :: Type -> Type) e a. Monad m => ExceptT e m a -> ExceptT e m () -> ExceptT e m a
+ Control.Monad.Ology.Specific.ExceptT: handleE :: forall (m :: Type -> Type) e e' a. Monad m => (e -> ExceptT e' m a) -> ExceptT e m a -> ExceptT e' m a
+ Control.Monad.Ology.Specific.ExceptT: tryE :: forall (m :: Type -> Type) e a. Monad m => ExceptT e m a -> ExceptT e m (Either e a)
+ Control.Monad.Ology.Specific.LifecycleT: type With (m :: k -> Type) t = forall (r :: k). () => t -> m r -> m r
+ Control.Monad.Ology.Specific.MaybeT: hoistMaybe :: forall (m :: Type -> Type) b. Applicative m => Maybe b -> MaybeT m b
+ Control.Monad.Ology.Specific.StackT: instance (Control.Monad.Ology.Specific.StackT.IsStack (Control.Monad.Ology.General.Trans.Constraint.TransConstraint GHC.Base.Monad) tt, Control.Monad.Ology.Specific.StackT.IsStack Control.Monad.Trans.Class.MonadTrans tt) => Control.Monad.Ology.General.Trans.Constraint.TransConstraint Control.Monad.Fail.MonadFail (Control.Monad.Ology.Specific.StackT.StackT tt)
+ Control.Monad.Ology.Specific.StackT: instance (Control.Monad.Ology.Specific.StackT.IsStack (Control.Monad.Ology.Specific.StackT.WithTunnelConstraint GHC.Base.Functor) tt, Control.Monad.Ology.Specific.StackT.IsStack (Control.Monad.Ology.Specific.StackT.WithTunnelConstraint Control.Monad.Ology.General.Inner.MonadInner) tt, Control.Monad.Ology.Specific.StackT.IsStack (Control.Monad.Ology.Specific.StackT.WithTunnelConstraint Control.Monad.Ology.General.Extract.MonadExtract) tt) => Control.Monad.Ology.General.Extract.MonadExtract (Control.Monad.Ology.Specific.StackT.StackTunnel tt)
+ Control.Monad.Ology.Specific.StateT: modifyM :: Monad m => (s -> m s) -> StateT s m ()
+ Control.Monad.Ology.Specific.StepT: underTunnelStepT :: forall t (m :: Type -> Type) (turn :: Type -> Type) r. (MonadTransTunnel t, Monad m, Functor turn) => ((forall (m1 :: Type -> Type) a. Monad m1 => t m1 a -> m1 (Tunnel t a)) -> StepT turn m (Tunnel t r)) -> StepT turn (t m) r
+ Control.Monad.Ology.Specific.WithT: instance forall k (m :: k -> GHC.Types.Type). GHC.Base.Applicative (Control.Monad.Ology.Specific.WithT.WithT m)
+ Control.Monad.Ology.Specific.WithT: instance forall k (m :: k -> GHC.Types.Type). GHC.Base.Functor (Control.Monad.Ology.Specific.WithT.WithT m)
+ Control.Monad.Ology.Specific.WithT: instance forall k (m :: k -> GHC.Types.Type). GHC.Base.Monad (Control.Monad.Ology.Specific.WithT.WithT m)
+ Control.Monad.Ology.Specific.WithT: instance forall k a (m :: k -> GHC.Types.Type). GHC.Base.Monoid a => GHC.Base.Monoid (Control.Monad.Ology.Specific.WithT.WithT m a)
+ Control.Monad.Ology.Specific.WithT: instance forall k a (m :: k -> GHC.Types.Type). GHC.Base.Semigroup a => GHC.Base.Semigroup (Control.Monad.Ology.Specific.WithT.WithT m a)
+ Control.Monad.Ology.Specific.WriterT: instance Control.Monad.Ology.General.Trans.Constraint.TransConstraint GHC.Base.Functor (Control.Monad.Trans.Writer.Lazy.WriterT w)
- Control.Monad.Ology.Data.Exn: MkExn :: (forall a. e -> m a) -> (forall a. m a -> (e -> m a) -> m a) -> Exn m e
+ Control.Monad.Ology.Data.Exn: MkExn :: (forall a. () => e -> m a) -> (forall a. () => m a -> (e -> m a) -> m a) -> Exn (m :: Type -> Type) e
- Control.Monad.Ology.Data.Exn: [exnCatch] :: Exn m e -> forall a. m a -> (e -> m a) -> m a
+ Control.Monad.Ology.Data.Exn: [exnCatch] :: Exn (m :: Type -> Type) e -> forall a. () => m a -> (e -> m a) -> m a
- Control.Monad.Ology.Data.Exn: [exnThrow] :: Exn m e -> forall a. e -> m a
+ Control.Monad.Ology.Data.Exn: [exnThrow] :: Exn (m :: Type -> Type) e -> forall a. () => e -> m a
- Control.Monad.Ology.Data.Exn: allExn :: forall m. MonadException m => Exn m (Exc m)
+ Control.Monad.Ology.Data.Exn: allExn :: forall (m :: Type -> Type). MonadException m => Exn m (Exc m)
- Control.Monad.Ology.Data.Exn: data Exn m e
+ Control.Monad.Ology.Data.Exn: data Exn (m :: Type -> Type) e
- Control.Monad.Ology.Data.Exn: liftExn :: forall t m. (MonadTransTunnel t, Monad m) => Exn m --> Exn (t m)
+ Control.Monad.Ology.Data.Exn: liftExn :: forall (t :: TransKind) (m :: Type -> Type). (MonadTransTunnel t, Monad m) => Exn m --> Exn (t m)
- Control.Monad.Ology.Data.Exn: mapExn :: (e2 -> e1) -> (e1 -> Maybe e2) -> Exn m e1 -> Exn m e2
+ Control.Monad.Ology.Data.Exn: mapExn :: forall e2 e1 (m :: Type -> Type). (e2 -> e1) -> (e1 -> Maybe e2) -> Exn m e1 -> Exn m e2
- Control.Monad.Ology.Data.Exn: someExn :: forall e m. MonadCatch e m => Exn m e
+ Control.Monad.Ology.Data.Exn: someExn :: forall e (m :: Type -> Type). MonadCatch e m => Exn m e
- Control.Monad.Ology.Data.Param: MkParam :: m a -> (a -> m --> m) -> Param m a
+ Control.Monad.Ology.Data.Param: MkParam :: m a -> (a -> m --> m) -> Param (m :: Type -> Type) a
- Control.Monad.Ology.Data.Param: [paramAsk] :: Param m a -> m a
+ Control.Monad.Ology.Data.Param: [paramAsk] :: Param (m :: Type -> Type) a -> m a
- Control.Monad.Ology.Data.Param: [paramWith] :: Param m a -> a -> m --> m
+ Control.Monad.Ology.Data.Param: [paramWith] :: Param (m :: Type -> Type) a -> a -> m --> m
- Control.Monad.Ology.Data.Param: data Param m a
+ Control.Monad.Ology.Data.Param: data Param (m :: Type -> Type) a
- Control.Monad.Ology.Data.Param: lensMapParam :: forall m a b. Monad m => Lens' a b -> Param m a -> Param m b
+ Control.Monad.Ology.Data.Param: lensMapParam :: forall (m :: Type -> Type) a b. Monad m => Lens' a b -> Param m a -> Param m b
- Control.Monad.Ology.Data.Param: liftParam :: (MonadTransTunnel t, Monad m) => Param m --> Param (t m)
+ Control.Monad.Ology.Data.Param: liftParam :: forall (t :: TransKind) (m :: Type -> Type). (MonadTransTunnel t, Monad m) => Param m --> Param (t m)
- Control.Monad.Ology.Data.Param: paramLocal :: forall m a. Monad m => Param m a -> (a -> a) -> m --> m
+ Control.Monad.Ology.Data.Param: paramLocal :: forall (m :: Type -> Type) a. Monad m => Param m a -> (a -> a) -> m --> m
- Control.Monad.Ology.Data.Param: paramLocalM :: forall m a. Monad m => Param m a -> (a -> m a) -> m --> m
+ Control.Monad.Ology.Data.Param: paramLocalM :: Monad m => Param m a -> (a -> m a) -> m --> m
- Control.Monad.Ology.Data.Param: readerParam :: forall m r. Monad m => Param (ReaderT r m) r
+ Control.Monad.Ology.Data.Param: readerParam :: forall (m :: Type -> Type) r. Monad m => Param (ReaderT r m) r
- Control.Monad.Ology.Data.Prod: MkProd :: (a -> m ()) -> (forall r. m r -> m (r, a)) -> Prod m a
+ Control.Monad.Ology.Data.Prod: MkProd :: (a -> m ()) -> (forall r. () => m r -> m (r, a)) -> Prod (m :: Type -> Type) a
- Control.Monad.Ology.Data.Prod: [prodCollect] :: Prod m a -> forall r. m r -> m (r, a)
+ Control.Monad.Ology.Data.Prod: [prodCollect] :: Prod (m :: Type -> Type) a -> forall r. () => m r -> m (r, a)
- Control.Monad.Ology.Data.Prod: [prodTell] :: Prod m a -> a -> m ()
+ Control.Monad.Ology.Data.Prod: [prodTell] :: Prod (m :: Type -> Type) a -> a -> m ()
- Control.Monad.Ology.Data.Prod: data Prod m a
+ Control.Monad.Ology.Data.Prod: data Prod (m :: Type -> Type) a
- Control.Monad.Ology.Data.Prod: foldProd :: forall f m a. (Applicative f, Foldable f, Applicative m) => Prod m a -> Prod m (f a)
+ Control.Monad.Ology.Data.Prod: foldProd :: forall f (m :: Type -> Type) a. (Applicative f, Foldable f, Applicative m) => Prod m a -> Prod m (f a)
- Control.Monad.Ology.Data.Prod: lensMapProd :: forall m a b. (Monad m, Monoid a, Monoid b) => Lens' a b -> Prod m a -> Prod m b
+ Control.Monad.Ology.Data.Prod: lensMapProd :: forall (m :: Type -> Type) a b. (Monad m, Monoid a, Monoid b) => Lens' a b -> Prod m a -> Prod m b
- Control.Monad.Ology.Data.Prod: liftProd :: (MonadTransTunnel t, Monad m) => Prod m --> Prod (t m)
+ Control.Monad.Ology.Data.Prod: liftProd :: forall (t :: TransKind) (m :: Type -> Type). (MonadTransTunnel t, Monad m) => Prod m --> Prod (t m)
- Control.Monad.Ology.Data.Prod: prodCensor :: Monad m => Prod m a -> (a -> a) -> m --> m
+ Control.Monad.Ology.Data.Prod: prodCensor :: forall (m :: Type -> Type) a. Monad m => Prod m a -> (a -> a) -> m --> m
- Control.Monad.Ology.Data.Prod: prodCensorItems :: (Monad f, Monad m) => Prod m (f a) -> (a -> f a) -> m --> m
+ Control.Monad.Ology.Data.Prod: prodCensorItems :: forall f (m :: Type -> Type) a. (Monad f, Monad m) => Prod m (f a) -> (a -> f a) -> m --> m
- Control.Monad.Ology.Data.Prod: prodListen :: Monad m => Prod m a -> forall r. m r -> m (r, a)
+ Control.Monad.Ology.Data.Prod: prodListen :: Monad m => Prod m a -> forall r. () => m r -> m (r, a)
- Control.Monad.Ology.Data.Prod: writerProd :: (Monad m, Monoid w) => Prod (WriterT w m) w
+ Control.Monad.Ology.Data.Prod: writerProd :: forall (m :: Type -> Type) w. (Monad m, Monoid w) => Prod (WriterT w m) w
- Control.Monad.Ology.Data.Ref: MkRef :: m a -> (a -> m ()) -> Ref m a
+ Control.Monad.Ology.Data.Ref: MkRef :: m a -> (a -> m ()) -> Ref (m :: Type -> Type) a
- Control.Monad.Ology.Data.Ref: [refGet] :: Ref m a -> m a
+ Control.Monad.Ology.Data.Ref: [refGet] :: Ref (m :: Type -> Type) a -> m a
- Control.Monad.Ology.Data.Ref: [refPut] :: Ref m a -> a -> m ()
+ Control.Monad.Ology.Data.Ref: [refPut] :: Ref (m :: Type -> Type) a -> a -> m ()
- Control.Monad.Ology.Data.Ref: data Ref m a
+ Control.Monad.Ology.Data.Ref: data Ref (m :: Type -> Type) a
- Control.Monad.Ology.Data.Ref: lensMapRef :: forall m a b. Monad m => Lens' a b -> Ref m a -> Ref m b
+ Control.Monad.Ology.Data.Ref: lensMapRef :: forall (m :: Type -> Type) a b. Monad m => Lens' a b -> Ref m a -> Ref m b
- Control.Monad.Ology.Data.Ref: liftRef :: (MonadTrans t, Monad m) => Ref m --> Ref (t m)
+ Control.Monad.Ology.Data.Ref: liftRef :: forall (t :: (Type -> Type) -> Type -> Type) (m :: Type -> Type). (MonadTrans t, Monad m) => Ref m --> Ref (t m)
- Control.Monad.Ology.Data.Ref: refParam :: forall m a. MonadException m => Ref m a -> Param m a
+ Control.Monad.Ology.Data.Ref: refParam :: forall (m :: Type -> Type) a. MonadException m => Ref m a -> Param m a
- Control.Monad.Ology.Data.Ref: refProd :: forall m a. (MonadException m, Monoid a) => Ref m a -> Prod m a
+ Control.Monad.Ology.Data.Ref: refProd :: forall (m :: Type -> Type) a. (MonadException m, Monoid a) => Ref m a -> Prod m a
- Control.Monad.Ology.Data.Ref: refRestore :: MonadException m => Ref m a -> m --> m
+ Control.Monad.Ology.Data.Ref: refRestore :: forall (m :: Type -> Type) a. MonadException m => Ref m a -> m --> m
- Control.Monad.Ology.Data.Ref: refRunState :: Monad m => Ref m s -> StateT s m --> m
+ Control.Monad.Ology.Data.Ref: refRunState :: forall (m :: Type -> Type) s. Monad m => Ref m s -> StateT s m --> m
- Control.Monad.Ology.Data.Ref: stateRef :: Monad m => Ref (StateT s m) s
+ Control.Monad.Ology.Data.Ref: stateRef :: forall (m :: Type -> Type) s. Monad m => Ref (StateT s m) s
- Control.Monad.Ology.General.Catch: catch :: forall a. MonadCatch e m => m a -> (e -> m a) -> m a
+ Control.Monad.Ology.General.Catch: catch :: MonadCatch e m => m a -> (e -> m a) -> m a
- Control.Monad.Ology.General.Catch: class MonadThrow e m => MonadCatch e m
+ Control.Monad.Ology.General.Catch: class MonadThrow e m => MonadCatch e (m :: Type -> Type)
- Control.Monad.Ology.General.Cont: class Monad m => MonadCont m
+ Control.Monad.Ology.General.Cont: class Monad m => MonadCont (m :: Type -> Type)
- Control.Monad.Ology.General.Coroutine: class Monad m => MonadCoroutine m
+ Control.Monad.Ology.General.Coroutine: class Monad m => MonadCoroutine (m :: Type -> Type)
- Control.Monad.Ology.General.Coroutine: pickWith :: forall m a. Monad m => m (a, m ()) -> With m a
+ Control.Monad.Ology.General.Coroutine: pickWith :: Monad m => m (a, m ()) -> With m a
- Control.Monad.Ology.General.Coroutine: unpickWith :: forall m a. MonadCoroutine m => With m a -> m (a, m ())
+ Control.Monad.Ology.General.Coroutine: unpickWith :: MonadCoroutine m => With m a -> m (a, m ())
- Control.Monad.Ology.General.Exception: bracket :: forall m a b. (MonadException m, MonadTunnelIO m) => m a -> (a -> m ()) -> (a -> m b) -> m b
+ Control.Monad.Ology.General.Exception: bracket :: (MonadException m, MonadTunnelIO m) => m a -> (a -> m ()) -> (a -> m b) -> m b
- Control.Monad.Ology.General.Exception: bracketFake :: forall m a b. Monad m => m a -> (a -> m ()) -> (a -> m b) -> m b
+ Control.Monad.Ology.General.Exception: bracketFake :: Monad m => m a -> (a -> m ()) -> (a -> m b) -> m b
- Control.Monad.Ology.General.Exception: bracketNoMask :: forall m a b. MonadException m => m a -> (a -> m ()) -> (a -> m b) -> m b
+ Control.Monad.Ology.General.Exception: bracketNoMask :: MonadException m => m a -> (a -> m ()) -> (a -> m b) -> m b
- Control.Monad.Ology.General.Exception: bracketNoMask_ :: forall m. MonadException m => m () -> m () -> m --> m
+ Control.Monad.Ology.General.Exception: bracketNoMask_ :: MonadException m => m () -> m () -> m --> m
- Control.Monad.Ology.General.Exception: bracket_ :: forall m. (MonadException m, MonadTunnelIO m) => m () -> m () -> m --> m
+ Control.Monad.Ology.General.Exception: bracket_ :: (MonadException m, MonadTunnelIO m) => m () -> m () -> m --> m
- Control.Monad.Ology.General.Exception: catchSomeExc :: forall m a. MonadException m => m a -> (Exc m -> m (Maybe a)) -> m a
+ Control.Monad.Ology.General.Exception: catchSomeExc :: MonadException m => m a -> (Exc m -> m (Maybe a)) -> m a
- Control.Monad.Ology.General.Exception: class Monad m => MonadException m where {
+ Control.Monad.Ology.General.Exception: class Monad m => MonadException (m :: Type -> Type) where {
- Control.Monad.Ology.General.Exception: finally :: forall m a. (MonadException m, MonadTunnelIO m) => m a -> m () -> m a
+ Control.Monad.Ology.General.Exception: finally :: (MonadException m, MonadTunnelIO m) => m a -> m () -> m a
- Control.Monad.Ology.General.Exception: fromResultExc :: forall m a. MonadException m => Result (Exc m) a -> m a
+ Control.Monad.Ology.General.Exception: fromResultExc :: MonadException m => Result (Exc m) a -> m a
- Control.Monad.Ology.General.Exception: mask :: forall m b. MonadTunnelIO m => ((forall a. m a -> m a) -> m b) -> m b
+ Control.Monad.Ology.General.Exception: mask :: MonadTunnelIO m => ((forall a. () => m a -> m a) -> m b) -> m b
- Control.Monad.Ology.General.Exception: onException :: forall m a. MonadException m => m a -> m () -> m a
+ Control.Monad.Ology.General.Exception: onException :: MonadException m => m a -> m () -> m a
- Control.Monad.Ology.General.Exception: tryExc :: forall m a. MonadException m => m a -> m (Result (Exc m) a)
+ Control.Monad.Ology.General.Exception: tryExc :: MonadException m => m a -> m (Result (Exc m) a)
- Control.Monad.Ology.General.Exception: type Exc m :: Type;
+ Control.Monad.Ology.General.Exception: type Exc (m :: Type -> Type);
- Control.Monad.Ology.General.Extract: class MonadInner m => MonadExtract m
+ Control.Monad.Ology.General.Extract: class MonadInner m => MonadExtract (m :: Type -> Type)
- Control.Monad.Ology.General.Function: MkWBackraised :: (p -/-> q) -> WBackraised p q
+ Control.Monad.Ology.General.Function: MkWBackraised :: (p -/-> q) -> WBackraised (p :: k -> Type) (q :: k -> Type)
- Control.Monad.Ology.General.Function: MkWExtract :: Extract m -> WExtract m
+ Control.Monad.Ology.General.Function: MkWExtract :: Extract m -> WExtract (m :: Type -> Type)
- Control.Monad.Ology.General.Function: MkWRaised :: (p --> q) -> WRaised p q
+ Control.Monad.Ology.General.Function: MkWRaised :: (p --> q) -> WRaised (p :: k -> Type) (q :: k -> Type)
- Control.Monad.Ology.General.Function: MkWUnlift :: Unlift c t -> WUnlift c t
+ Control.Monad.Ology.General.Function: MkWUnlift :: Unlift c t -> WUnlift (c :: (Type -> Type) -> Constraint) (t :: TransKind)
- Control.Monad.Ology.General.Function: [unWBackraised] :: WBackraised p q -> p -/-> q
+ Control.Monad.Ology.General.Function: [unWBackraised] :: WBackraised (p :: k -> Type) (q :: k -> Type) -> p -/-> q
- Control.Monad.Ology.General.Function: [unWExtract] :: WExtract m -> Extract m
+ Control.Monad.Ology.General.Function: [unWExtract] :: WExtract (m :: Type -> Type) -> Extract m
- Control.Monad.Ology.General.Function: [unWRaised] :: WRaised p q -> p --> q
+ Control.Monad.Ology.General.Function: [unWRaised] :: WRaised (p :: k -> Type) (q :: k -> Type) -> p --> q
- Control.Monad.Ology.General.Function: [unWUnlift] :: WUnlift c t -> Unlift c t
+ Control.Monad.Ology.General.Function: [unWUnlift] :: WUnlift (c :: (Type -> Type) -> Constraint) (t :: TransKind) -> Unlift c t
- Control.Monad.Ology.General.Function: backraisedToRaised :: (ma -/-> mb) -> ma --> mb
+ Control.Monad.Ology.General.Function: backraisedToRaised :: forall {k} (ma :: k -> Type) (mb :: k -> Type). (ma -/-> mb) -> ma --> mb
- Control.Monad.Ology.General.Function: newtype WBackraised p q
+ Control.Monad.Ology.General.Function: newtype WBackraised (p :: k -> Type) (q :: k -> Type)
- Control.Monad.Ology.General.Function: newtype WExtract m
+ Control.Monad.Ology.General.Function: newtype WExtract (m :: Type -> Type)
- Control.Monad.Ology.General.Function: newtype WRaised p q
+ Control.Monad.Ology.General.Function: newtype WRaised (p :: k -> Type) (q :: k -> Type)
- Control.Monad.Ology.General.Function: newtype WUnlift c t
+ Control.Monad.Ology.General.Function: newtype WUnlift (c :: Type -> Type -> Constraint) (t :: TransKind)
- Control.Monad.Ology.General.Function: type TransKind = (Type -> Type) -> (Type -> Type)
+ Control.Monad.Ology.General.Function: type TransKind = Type -> Type -> Type -> Type
- Control.Monad.Ology.General.Function: type p --> q = Raised p q
+ Control.Monad.Ology.General.Function: type Raised (p :: k -> Type) (q :: k -> Type) = forall (a :: k). () => p a -> q a
- Control.Monad.Ology.General.Function: type Unlift c t = forall (m :: Type -> Type). c m => t m --> m
+ Control.Monad.Ology.General.Function: type Unlift (c :: Type -> Type -> Constraint) (t :: TransKind) = forall (m :: Type -> Type). c m => t m --> m
- Control.Monad.Ology.General.Function: wBackraisedToWRaised :: WBackraised ma mb -> WRaised ma mb
+ Control.Monad.Ology.General.Function: wBackraisedToWRaised :: forall {k} (ma :: k -> Type) (mb :: k -> Type). WBackraised ma mb -> WRaised ma mb
- Control.Monad.Ology.General.Function: wLift :: (MonadTrans t, Monad m) => WRaised m (t m)
+ Control.Monad.Ology.General.Function: wLift :: forall (t :: (Type -> Type) -> Type -> Type) (m :: Type -> Type). (MonadTrans t, Monad m) => WRaised m (t m)
- Control.Monad.Ology.General.Function: wLiftIO :: MonadIO m => WRaised IO m
+ Control.Monad.Ology.General.Function: wLiftIO :: forall (m :: Type -> Type). MonadIO m => WRaised IO m
- Control.Monad.Ology.General.Function: wUnliftToWRaised :: c m => WUnlift c t -> WRaised (t m) m
+ Control.Monad.Ology.General.Function: wUnliftToWRaised :: forall (c :: (Type -> Type) -> Constraint) (m :: Type -> Type) (t :: TransKind). c m => WUnlift c t -> WRaised (t m) m
- Control.Monad.Ology.General.Identity: class (MonadOuter m, MonadExtract m) => MonadIdentity m
+ Control.Monad.Ology.General.Identity: class (MonadOuter m, MonadExtract m) => MonadIdentity (m :: Type -> Type)
- Control.Monad.Ology.General.Inner: class (Traversable m, MonadException m) => MonadInner m
+ Control.Monad.Ology.General.Inner: class (Traversable m, MonadException m) => MonadInner (m :: Type -> Type)
- Control.Monad.Ology.General.Inner: commuteInner :: forall m f a. (MonadInner m, Applicative f) => m (f a) -> f (m a)
+ Control.Monad.Ology.General.Inner: commuteInner :: (MonadInner m, Applicative f) => m (f a) -> f (m a)
- Control.Monad.Ology.General.Inner: mToMaybe :: forall m a. MonadInner m => m a -> Maybe a
+ Control.Monad.Ology.General.Inner: mToMaybe :: MonadInner m => m a -> Maybe a
- Control.Monad.Ology.General.Inner: retrieveInner :: forall a. MonadInner m => m a -> Result (Exc m) a
+ Control.Monad.Ology.General.Inner: retrieveInner :: MonadInner m => m a -> Result (Exc m) a
- Control.Monad.Ology.General.Outer: class Monad m => MonadOuter m
+ Control.Monad.Ology.General.Outer: class Monad m => MonadOuter (m :: Type -> Type)
- Control.Monad.Ology.General.Outer: commuteOuter :: forall m f a. (MonadOuter m, Functor f) => f (m a) -> m (f a)
+ Control.Monad.Ology.General.Outer: commuteOuter :: (MonadOuter m, Functor f) => f (m a) -> m (f a)
- Control.Monad.Ology.General.Throw: class Monad m => MonadThrow e m
+ Control.Monad.Ology.General.Throw: class Monad m => MonadThrow e (m :: Type -> Type)
- Control.Monad.Ology.General.Throw: throw :: forall a. MonadThrow e m => e -> m a
+ Control.Monad.Ology.General.Throw: throw :: MonadThrow e m => e -> m a
- Control.Monad.Ology.General.Trans.AskUnlift: askUnlift :: forall m. (MonadTransAskUnlift t, MonadIdentity (Tunnel t), Monad m) => t m (WUnlift Monad t)
+ Control.Monad.Ology.General.Trans.AskUnlift: askUnlift :: forall (m :: Type -> Type). (MonadTransAskUnlift t, Monad m) => t m (WUnlift Monad t)
- Control.Monad.Ology.General.Trans.AskUnlift: class MonadUnliftIO m => MonadAskUnliftIO m
+ Control.Monad.Ology.General.Trans.AskUnlift: class MonadUnliftIO m => MonadAskUnliftIO (m :: Type -> Type)
- Control.Monad.Ology.General.Trans.AskUnlift: class MonadTransUnlift t => MonadTransAskUnlift t
+ Control.Monad.Ology.General.Trans.AskUnlift: class MonadTransUnlift t => MonadTransAskUnlift (t :: TransKind)
- Control.Monad.Ology.General.Trans.AskUnlift: contractT :: forall (t :: TransKind) m. (MonadTransAskUnlift t, Monad m) => t (t m) --> t m
+ Control.Monad.Ology.General.Trans.AskUnlift: contractT :: forall (t :: TransKind) (m :: Type -> Type). (MonadTransAskUnlift t, Monad m) => t (t m) --> t m
- Control.Monad.Ology.General.Trans.AskUnlift: contractTBack :: forall (t :: TransKind) m. (MonadTransAskUnlift t, Monad m) => t (t m) -/-> t m
+ Control.Monad.Ology.General.Trans.AskUnlift: contractTBack :: forall (t :: TransKind) (m :: Type -> Type). (MonadTransAskUnlift t, Monad m) => t (t m) -/-> t m
- Control.Monad.Ology.General.Trans.Coerce: class MonadTrans t => MonadTransCoerce t
+ Control.Monad.Ology.General.Trans.Coerce: class MonadTrans t => MonadTransCoerce (t :: Type -> Type -> Type -> Type)
- Control.Monad.Ology.General.Trans.Coerce: transCoerce :: forall m1 m2. (MonadTransCoerce t, Coercible m1 m2) => Dict (Coercible (t m1) (t m2))
+ Control.Monad.Ology.General.Trans.Coerce: transCoerce :: forall (m1 :: Type -> Type) (m2 :: Type -> Type). (MonadTransCoerce t, Coercible m1 m2) => Dict (Coercible (t m1) (t m2))
- Control.Monad.Ology.General.Trans.Constraint: class TransConstraint c t
+ Control.Monad.Ology.General.Trans.Constraint: class TransConstraint (c :: Type -> Type -> Constraint) (t :: TransKind)
- Control.Monad.Ology.General.Trans.Constraint: transConstraintDict :: forall c t m. TransConstraint c t => Dict (c m) -> Dict (c (t m))
+ Control.Monad.Ology.General.Trans.Constraint: transConstraintDict :: forall c (t :: TransKind) (m :: Type -> Type). TransConstraint c t => Dict (c m) -> Dict (c (t m))
- Control.Monad.Ology.General.Trans.Constraint: withTransConstraintDict :: forall c t m c'. (TransConstraint c t, c m) => (c (t m) => Dict (c' (t m))) -> Dict (c' (t m))
+ Control.Monad.Ology.General.Trans.Constraint: withTransConstraintDict :: forall c (t :: TransKind) (m :: Type -> Type) c'. (TransConstraint c t, c m) => (c (t m) => Dict (c' (t m))) -> Dict (c' (t m))
- Control.Monad.Ology.General.Trans.Constraint: withTransConstraintTM :: forall c t m a. (TransConstraint c t, c m) => (c (t m) => t m a) -> t m a
+ Control.Monad.Ology.General.Trans.Constraint: withTransConstraintTM :: forall c t (m :: Type -> Type) a. (TransConstraint c t, c m) => (c (t m) => t m a) -> t m a
- Control.Monad.Ology.General.Trans.Constraint: withTransConstraintTM' :: forall c t' t m a. (TransConstraint c t, c m) => (c (t m) => t' (t m) a) -> t' (t m) a
+ Control.Monad.Ology.General.Trans.Constraint: withTransConstraintTM' :: forall {k} c t' (t :: TransKind) (m :: Type -> Type) (a :: k). (TransConstraint c t, c m) => (c (t m) => t' (t m) a) -> t' (t m) a
- Control.Monad.Ology.General.Trans.Hoist: class MonadIO m => MonadHoistIO m
+ Control.Monad.Ology.General.Trans.Hoist: class MonadIO m => MonadHoistIO (m :: Type -> Type)
- Control.Monad.Ology.General.Trans.Hoist: class (MonadTrans t, TransConstraint Monad t) => MonadTransHoist t
+ Control.Monad.Ology.General.Trans.Hoist: class (MonadTrans t, TransConstraint Monad t) => MonadTransHoist (t :: TransKind)
- Control.Monad.Ology.General.Trans.Hoist: hoist :: forall m1 m2. (MonadTransHoist t, Monad m1, Monad m2) => (m1 --> m2) -> t m1 --> t m2
+ Control.Monad.Ology.General.Trans.Hoist: hoist :: forall (m1 :: Type -> Type) (m2 :: Type -> Type). (MonadTransHoist t, Monad m1, Monad m2) => (m1 --> m2) -> t m1 --> t m2
- Control.Monad.Ology.General.Trans.Hoist: hoistTransform :: (MonadTransHoist t, Monad m1, Monad m2) => (m1 --> m2) -> WRaised (t m2) --> WRaised (t m1)
+ Control.Monad.Ology.General.Trans.Hoist: hoistTransform :: forall (t :: TransKind) (m1 :: Type -> Type) (m2 :: Type -> Type). (MonadTransHoist t, Monad m1, Monad m2) => (m1 --> m2) -> WRaised (t m2) --> WRaised (t m1)
- Control.Monad.Ology.General.Trans.Tunnel: backHoist :: (MonadTransTunnel t, Monad ma, Monad mb) => (ma -/-> mb) -> t ma -/-> t mb
+ Control.Monad.Ology.General.Trans.Tunnel: backHoist :: forall (t :: TransKind) (ma :: Type -> Type) (mb :: Type -> Type). (MonadTransTunnel t, Monad ma, Monad mb) => (ma -/-> mb) -> t ma -/-> t mb
- Control.Monad.Ology.General.Trans.Tunnel: class (MonadTransHoist t, MonadInner (Tunnel t)) => MonadTransTunnel t where {
+ Control.Monad.Ology.General.Trans.Tunnel: class (MonadTransHoist t, MonadInner Tunnel t) => MonadTransTunnel (t :: TransKind) where {
- Control.Monad.Ology.General.Trans.Tunnel: class (MonadHoistIO m, MonadInner (TunnelIO m)) => MonadTunnelIO m where {
+ Control.Monad.Ology.General.Trans.Tunnel: class (MonadHoistIO m, MonadInner TunnelIO m) => MonadTunnelIO (m :: Type -> Type) where {
- Control.Monad.Ology.General.Trans.Tunnel: commuteT :: forall ta tb m. (MonadTransTunnel ta, MonadTransTunnel tb, Monad m) => ta (tb m) --> tb (ta m)
+ Control.Monad.Ology.General.Trans.Tunnel: commuteT :: forall (ta :: TransKind) (tb :: TransKind) (m :: Type -> Type). (MonadTransTunnel ta, MonadTransTunnel tb, Monad m) => ta (tb m) --> tb (ta m)
- Control.Monad.Ology.General.Trans.Tunnel: commuteTBack :: forall ta tb m. (MonadTransTunnel ta, MonadTransTunnel tb, Monad m) => ta (tb m) -/-> tb (ta m)
+ Control.Monad.Ology.General.Trans.Tunnel: commuteTBack :: forall (ta :: TransKind) (tb :: TransKind) (m :: Type -> Type). (MonadTransTunnel ta, MonadTransTunnel tb, Monad m) => ta (tb m) -/-> tb (ta m)
- Control.Monad.Ology.General.Trans.Tunnel: commuteTWith :: forall ta tb m. (MonadTransTunnel ta, MonadTransTunnel tb, Monad m) => (forall r. Tunnel tb (Tunnel ta r) -> Tunnel ta (Tunnel tb r)) -> ta (tb m) --> tb (ta m)
+ Control.Monad.Ology.General.Trans.Tunnel: commuteTWith :: forall (ta :: TransKind) (tb :: TransKind) (m :: Type -> Type). (MonadTransTunnel ta, MonadTransTunnel tb, Monad m) => (forall r. () => Tunnel tb (Tunnel ta r) -> Tunnel ta (Tunnel tb r)) -> ta (tb m) --> tb (ta m)
- Control.Monad.Ology.General.Trans.Tunnel: tunnel :: forall m r. (MonadTransTunnel t, Monad m) => ((forall m1 a. Monad m1 => t m1 a -> m1 (Tunnel t a)) -> m (Tunnel t r)) -> t m r
+ Control.Monad.Ology.General.Trans.Tunnel: tunnel :: (MonadTransTunnel t, Monad m) => ((forall (m1 :: Type -> Type) a. Monad m1 => t m1 a -> m1 (Tunnel t a)) -> m (Tunnel t r)) -> t m r
- Control.Monad.Ology.General.Trans.Tunnel: tunnelHoist :: forall t m1 m2. (MonadTransTunnel t, Monad m1, Monad m2) => (m1 --> m2) -> t m1 --> t m2
+ Control.Monad.Ology.General.Trans.Tunnel: tunnelHoist :: forall (t :: TransKind) (m1 :: Type -> Type) (m2 :: Type -> Type). (MonadTransTunnel t, Monad m1, Monad m2) => (m1 --> m2) -> t m1 --> t m2
- Control.Monad.Ology.General.Trans.Tunnel: tunnelIO :: forall r. MonadTunnelIO m => ((forall a. m a -> IO (TunnelIO m a)) -> IO (TunnelIO m r)) -> m r
+ Control.Monad.Ology.General.Trans.Tunnel: tunnelIO :: MonadTunnelIO m => ((forall a. () => m a -> IO (TunnelIO m a)) -> IO (TunnelIO m r)) -> m r
- Control.Monad.Ology.General.Trans.Tunnel: type Tunnel t :: Type -> Type;
+ Control.Monad.Ology.General.Trans.Tunnel: type Tunnel (t :: TransKind) :: Type -> Type;
- Control.Monad.Ology.General.Trans.Tunnel: type TunnelIO m :: Type -> Type;
+ Control.Monad.Ology.General.Trans.Tunnel: type TunnelIO (m :: Type -> Type) :: Type -> Type;
- Control.Monad.Ology.General.Trans.Tunnel: wBackHoist :: (MonadTransTunnel t, Monad ma, Monad mb) => WBackraised ma mb -> WBackraised (t ma) (t mb)
+ Control.Monad.Ology.General.Trans.Tunnel: wBackHoist :: forall (t :: TransKind) (ma :: Type -> Type) (mb :: Type -> Type). (MonadTransTunnel t, Monad ma, Monad mb) => WBackraised ma mb -> WBackraised (t ma) (t mb)
- Control.Monad.Ology.General.Trans.Unlift: class (MonadTransTunnel t, TransConstraint MonadFail t, TransConstraint MonadIO t, TransConstraint MonadFix t, TransConstraint Monad t, MonadExtract (Tunnel t)) => MonadTransUnlift t
+ Control.Monad.Ology.General.Trans.Unlift: class (MonadTransTunnel t, TransConstraint MonadFail t, TransConstraint MonadIO t, TransConstraint MonadFix t, TransConstraint Monad t, MonadExtract Tunnel t) => MonadTransUnlift (t :: TransKind)
- Control.Monad.Ology.General.Trans.Unlift: class (MonadFail m, MonadIO m, MonadFix m, MonadTunnelIO m, MonadExtract (TunnelIO m)) => MonadUnliftIO m
+ Control.Monad.Ology.General.Trans.Unlift: class (MonadFail m, MonadIO m, MonadFix m, MonadTunnelIO m, MonadExtract TunnelIO m) => MonadUnliftIO (m :: Type -> Type)
- Control.Monad.Ology.General.Trans.Unlift: composeUnliftRaised :: (MonadTransUnlift t, MonadUnliftIO m) => Unlift Functor t -> (m --> n) -> t m --> n
+ Control.Monad.Ology.General.Trans.Unlift: composeUnliftRaised :: forall (m :: Type -> Type) (t :: TransKind) (n :: Type -> Type). MonadUnliftIO m => Unlift Functor t -> (m --> n) -> t m --> n
- Control.Monad.Ology.General.Trans.Unlift: composeUnliftRaisedCommute :: (MonadTransUnlift t, MonadUnliftIO m, MonadUnliftIO n) => Unlift Functor t -> (m --> n) -> t m --> n
+ Control.Monad.Ology.General.Trans.Unlift: composeUnliftRaisedCommute :: forall (t :: TransKind) (m :: Type -> Type) (n :: Type -> Type). (MonadTransUnlift t, MonadUnliftIO m, MonadUnliftIO n) => Unlift Functor t -> (m --> n) -> t m --> n
- Control.Monad.Ology.General.Trans.Unlift: getDiscardingUnlift :: forall m. (MonadTransUnlift t, Monad m) => t m (WUnlift MonadTunnelIO t)
+ Control.Monad.Ology.General.Trans.Unlift: getDiscardingUnlift :: forall (m :: Type -> Type). (MonadTransUnlift t, Monad m) => t m (WUnlift MonadTunnelIO t)
- Control.Monad.Ology.General.Trans.Unlift: liftWithUnlift :: forall m r. (MonadTransUnlift t, MonadIO m) => (Unlift MonadTunnelIO t -> m r) -> t m r
+ Control.Monad.Ology.General.Trans.Unlift: liftWithUnlift :: (MonadTransUnlift t, MonadIO m) => (Unlift MonadTunnelIO t -> m r) -> t m r
- Control.Monad.Ology.General.Trans.Unlift: monoHoist :: forall (t :: TransKind) ma mb a b. (MonadTransUnlift t, MonadTunnelIO ma, MonadIO mb) => (ma a -> mb b) -> t ma a -> t mb b
+ Control.Monad.Ology.General.Trans.Unlift: monoHoist :: (MonadTransUnlift t, MonadTunnelIO ma, MonadIO mb) => (ma a -> mb b) -> t ma a -> t mb b
- Control.Monad.Ology.General.Trans.Unlift: toDiscardingUnlift :: forall t. MonadTransUnlift t => Unlift MonadUnliftIO t -> Unlift MonadUnliftIO t
+ Control.Monad.Ology.General.Trans.Unlift: toDiscardingUnlift :: forall (t :: TransKind). MonadTransUnlift t => Unlift MonadUnliftIO t -> Unlift MonadUnliftIO t
- Control.Monad.Ology.General.Trans.Unlift: wLiftIOWithUnlift :: MonadUnliftIO m => WBackraised IO m
+ Control.Monad.Ology.General.Trans.Unlift: wLiftIOWithUnlift :: forall (m :: Type -> Type). MonadUnliftIO m => WBackraised IO m
- Control.Monad.Ology.General.Trans.Unlift: wLiftWithUnlift :: forall t m. (MonadTransUnlift t, MonadTunnelIO m) => WBackraised m (t m)
+ Control.Monad.Ology.General.Trans.Unlift: wLiftWithUnlift :: forall (t :: TransKind) (m :: Type -> Type). (MonadTransUnlift t, MonadTunnelIO m) => WBackraised m (t m)
- Control.Monad.Ology.Specific.ComposeInner: MkComposeInner :: outer (inner a) -> ComposeInner inner outer a
+ Control.Monad.Ology.Specific.ComposeInner: MkComposeInner :: outer (inner a) -> ComposeInner (inner :: Type -> Type) (outer :: Type -> Type) a
- Control.Monad.Ology.Specific.ComposeInner: [unComposeInner] :: ComposeInner inner outer a -> outer (inner a)
+ Control.Monad.Ology.Specific.ComposeInner: [unComposeInner] :: ComposeInner (inner :: Type -> Type) (outer :: Type -> Type) a -> outer (inner a)
- Control.Monad.Ology.Specific.ComposeInner: liftInner :: Applicative outer => inner --> ComposeInner inner outer
+ Control.Monad.Ology.Specific.ComposeInner: liftInner :: forall (inner :: Type -> Type) (outer :: Type -> Type). Applicative outer => inner --> ComposeInner inner outer
- Control.Monad.Ology.Specific.ComposeInner: newtype ComposeInner inner outer a
+ Control.Monad.Ology.Specific.ComposeInner: newtype ComposeInner (inner :: Type -> Type) (outer :: Type -> Type) a
- Control.Monad.Ology.Specific.ComposeOuter: MkComposeOuter :: outer (inner a) -> ComposeOuter outer inner a
+ Control.Monad.Ology.Specific.ComposeOuter: MkComposeOuter :: outer (inner a) -> ComposeOuter (outer :: Type -> Type) (inner :: Type -> Type) a
- Control.Monad.Ology.Specific.ComposeOuter: [unComposeOuter] :: ComposeOuter outer inner a -> outer (inner a)
+ Control.Monad.Ology.Specific.ComposeOuter: [unComposeOuter] :: ComposeOuter (outer :: Type -> Type) (inner :: Type -> Type) a -> outer (inner a)
- Control.Monad.Ology.Specific.ComposeOuter: liftOuter :: (Functor outer, Applicative inner) => outer --> ComposeOuter outer inner
+ Control.Monad.Ology.Specific.ComposeOuter: liftOuter :: forall (outer :: Type -> Type) (inner :: Type -> Type). (Functor outer, Applicative inner) => outer --> ComposeOuter outer inner
- Control.Monad.Ology.Specific.ComposeOuter: newtype ComposeOuter outer inner a
+ Control.Monad.Ology.Specific.ComposeOuter: newtype ComposeOuter (outer :: Type -> Type) (inner :: Type -> Type) a
- Control.Monad.Ology.Specific.ComposeT: MkComposeT :: outerT (innerT m) a -> ComposeT (outerT :: TransKind) (innerT :: TransKind) (m :: Type -> Type) (a :: Type)
+ Control.Monad.Ology.Specific.ComposeT: MkComposeT :: outerT (innerT m) a -> ComposeT (outerT :: TransKind) (innerT :: TransKind) (m :: Type -> Type) a
- Control.Monad.Ology.Specific.ComposeT: [unComposeT] :: ComposeT (outerT :: TransKind) (innerT :: TransKind) (m :: Type -> Type) (a :: Type) -> outerT (innerT m) a
+ Control.Monad.Ology.Specific.ComposeT: [unComposeT] :: ComposeT (outerT :: TransKind) (innerT :: TransKind) (m :: Type -> Type) a -> outerT (innerT m) a
- Control.Monad.Ology.Specific.ComposeT: composeTUnlift :: forall c outerT innerT. (MonadTransUnlift innerT, TransConstraint c innerT) => Unlift c outerT -> Unlift c innerT -> Unlift c (ComposeT outerT innerT)
+ Control.Monad.Ology.Specific.ComposeT: composeTUnlift :: forall (c :: (Type -> Type) -> Constraint) (outerT :: TransKind) (innerT :: TransKind). TransConstraint c innerT => Unlift c outerT -> Unlift c innerT -> Unlift c (ComposeT outerT innerT)
- Control.Monad.Ology.Specific.ComposeT: composeTWUnlift :: forall c outerT innerT. (MonadTransUnlift innerT, TransConstraint c innerT) => WUnlift c outerT -> WUnlift c innerT -> WUnlift c (ComposeT outerT innerT)
+ Control.Monad.Ology.Specific.ComposeT: composeTWUnlift :: forall (c :: (Type -> Type) -> Constraint) (outerT :: TransKind) (innerT :: TransKind). TransConstraint c innerT => WUnlift c outerT -> WUnlift c innerT -> WUnlift c (ComposeT outerT innerT)
- Control.Monad.Ology.Specific.ComposeT: liftInnerComposeT :: forall outerT innerT m a. (MonadTrans outerT, TransConstraint Monad innerT, Monad m) => innerT m a -> ComposeT outerT innerT m a
+ Control.Monad.Ology.Specific.ComposeT: liftInnerComposeT :: forall (outerT :: (Type -> Type) -> Type -> Type) innerT (m :: Type -> Type) a. (MonadTrans outerT, TransConstraint Monad innerT, Monad m) => innerT m a -> ComposeT outerT innerT m a
- Control.Monad.Ology.Specific.ComposeT: liftInnerComposeTWithUnlift :: forall outerT innerT m r. (MonadTransUnlift outerT, MonadTransUnlift innerT, MonadTunnelIO m) => ((forall a. ComposeT outerT innerT m a -> innerT m a) -> innerT m r) -> ComposeT outerT innerT m r
+ Control.Monad.Ology.Specific.ComposeT: liftInnerComposeTWithUnlift :: forall (outerT :: TransKind) innerT (m :: Type -> Type) r. (MonadTransUnlift outerT, MonadTransUnlift innerT, MonadTunnelIO m) => ((forall a. () => ComposeT outerT innerT m a -> innerT m a) -> innerT m r) -> ComposeT outerT innerT m r
- Control.Monad.Ology.Specific.ComposeT: liftOuterComposeT :: forall outerT innerT m a. (MonadTransTunnel outerT, MonadTrans innerT, TransConstraint Monad innerT, Monad m) => outerT m a -> ComposeT outerT innerT m a
+ Control.Monad.Ology.Specific.ComposeT: liftOuterComposeT :: forall outerT (innerT :: (Type -> Type) -> Type -> Type) (m :: Type -> Type) a. (MonadTransTunnel outerT, MonadTrans innerT, TransConstraint Monad innerT, Monad m) => outerT m a -> ComposeT outerT innerT m a
- Control.Monad.Ology.Specific.ComposeT: liftOuterComposeTWithUnlift :: forall outerT innerT m r. (MonadTransTunnel outerT, MonadTransUnlift innerT, MonadTunnelIO m) => ((forall a. ComposeT outerT innerT m a -> outerT m a) -> outerT m r) -> ComposeT outerT innerT m r
+ Control.Monad.Ology.Specific.ComposeT: liftOuterComposeTWithUnlift :: forall outerT (innerT :: TransKind) (m :: Type -> Type) r. (MonadTransTunnel outerT, MonadTransUnlift innerT, MonadTunnelIO m) => ((forall a. () => ComposeT outerT innerT m a -> outerT m a) -> outerT m r) -> ComposeT outerT innerT m r
- Control.Monad.Ology.Specific.ComposeT: newtype ComposeT (outerT :: TransKind) (innerT :: TransKind) (m :: Type -> Type) (a :: Type)
+ Control.Monad.Ology.Specific.ComposeT: newtype ComposeT (outerT :: TransKind) (innerT :: TransKind) (m :: Type -> Type) a
- Control.Monad.Ology.Specific.ContT: hoistContT :: (m1 r1 -> m2 r2) -> (m2 r2 -> m1 r1) -> ContT r1 m1 a -> ContT r2 m2 a
+ Control.Monad.Ology.Specific.ContT: hoistContT :: forall {k1} {k2} m1 (r1 :: k1) m2 (r2 :: k2) a. (m1 r1 -> m2 r2) -> (m2 r2 -> m1 r1) -> ContT r1 m1 a -> ContT r2 m2 a
- Control.Monad.Ology.Specific.ContT: stateToReaderContT :: Monad m => StateT s m a -> ContT r (ReaderT s m) a
+ Control.Monad.Ology.Specific.ContT: stateToReaderContT :: forall (m :: Type -> Type) s a r. Monad m => StateT s m a -> ContT r (ReaderT s m) a
- Control.Monad.Ology.Specific.ContT: updateContT :: (m r -> m r) -> ContT r m ()
+ Control.Monad.Ology.Specific.ContT: updateContT :: forall {k} m (r :: k). (m r -> m r) -> ContT r m ()
- Control.Monad.Ology.Specific.CoroutineT: joinCoroutines :: Monad m => CoroutineT q r m a -> (q -> CoroutineT p q m a) -> CoroutineT p r m a
+ Control.Monad.Ology.Specific.CoroutineT: joinCoroutines :: forall (m :: Type -> Type) q r a p. Monad m => CoroutineT q r m a -> (q -> CoroutineT p q m a) -> CoroutineT p r m a
- Control.Monad.Ology.Specific.CoroutineT: type CoroutineT p q = StepT (Turn p q)
+ Control.Monad.Ology.Specific.CoroutineT: type CoroutineT p q = StepT Turn p q
- Control.Monad.Ology.Specific.CoroutineT: yieldCoroutine :: Monad m => p -> CoroutineT p q m q
+ Control.Monad.Ology.Specific.CoroutineT: yieldCoroutine :: forall (m :: Type -> Type) p q. Monad m => p -> CoroutineT p q m q
- Control.Monad.Ology.Specific.ExceptT: transExcept :: forall t m e a. (MonadTransTunnel t, Applicative (Tunnel t), Monad m) => t (ExceptT e m) a -> t m (Either e a)
+ Control.Monad.Ology.Specific.ExceptT: transExcept :: forall t (m :: Type -> Type) e a. (MonadTransTunnel t, Monad m) => t (ExceptT e m) a -> t m (Either e a)
- Control.Monad.Ology.Specific.IdentityT: identityWUnlift :: WUnlift c IdentityT
+ Control.Monad.Ology.Specific.IdentityT: identityWUnlift :: forall (c :: (Type -> Type) -> Constraint). WUnlift c (IdentityT :: (Type -> Type) -> Type -> Type)
- Control.Monad.Ology.Specific.LifecycleT: MkLifecycleT :: (MVar LifeState -> m a) -> LifecycleT m a
+ Control.Monad.Ology.Specific.LifecycleT: MkLifecycleT :: (MVar LifeState -> m a) -> LifecycleT (m :: Type -> Type) a
- Control.Monad.Ology.Specific.LifecycleT: [unLifecycleT] :: LifecycleT m a -> MVar LifeState -> m a
+ Control.Monad.Ology.Specific.LifecycleT: [unLifecycleT] :: LifecycleT (m :: Type -> Type) a -> MVar LifeState -> m a
- Control.Monad.Ology.Specific.LifecycleT: addLifeState :: MonadIO m => LifeState -> LifecycleT m ()
+ Control.Monad.Ology.Specific.LifecycleT: addLifeState :: forall (m :: Type -> Type). MonadIO m => LifeState -> LifecycleT m ()
- Control.Monad.Ology.Specific.LifecycleT: getLifeState :: forall m a. MonadIO m => LifecycleT m a -> m (a, LifeState)
+ Control.Monad.Ology.Specific.LifecycleT: getLifeState :: MonadIO m => LifecycleT m a -> m (a, LifeState)
- Control.Monad.Ology.Specific.LifecycleT: lifecycleGetCloser :: forall m a. MonadIO m => LifecycleT m a -> LifecycleT m (a, IO ())
+ Control.Monad.Ology.Specific.LifecycleT: lifecycleGetCloser :: forall (m :: Type -> Type) a. MonadIO m => LifecycleT m a -> LifecycleT m (a, IO ())
- Control.Monad.Ology.Specific.LifecycleT: lifecycleMonitor :: MonadIO m => LifecycleT m (IO Bool)
+ Control.Monad.Ology.Specific.LifecycleT: lifecycleMonitor :: forall (m :: Type -> Type). MonadIO m => LifecycleT m (IO Bool)
- Control.Monad.Ology.Specific.LifecycleT: lifecycleOnCloseIO :: MonadIO m => IO () -> LifecycleT m ()
+ Control.Monad.Ology.Specific.LifecycleT: lifecycleOnCloseIO :: forall (m :: Type -> Type). MonadIO m => IO () -> LifecycleT m ()
- Control.Monad.Ology.Specific.LifecycleT: lifecycleWith :: (MonadCoroutine m, MonadAskUnliftIO m) => With m t -> LifecycleT m t
+ Control.Monad.Ology.Specific.LifecycleT: lifecycleWith :: forall (m :: Type -> Type) t. (MonadCoroutine m, MonadAskUnliftIO m) => With m t -> LifecycleT m t
- Control.Monad.Ology.Specific.LifecycleT: modifyLifeState :: forall m. MonadIO m => (LifeState -> LifeState) -> LifecycleT m --> LifecycleT m
+ Control.Monad.Ology.Specific.LifecycleT: modifyLifeState :: forall (m :: Type -> Type). MonadIO m => (LifeState -> LifeState) -> LifecycleT m --> LifecycleT m
- Control.Monad.Ology.Specific.LifecycleT: newtype LifecycleT m a
+ Control.Monad.Ology.Specific.LifecycleT: newtype LifecycleT (m :: Type -> Type) a
- Control.Monad.Ology.Specific.LifecycleT: runLifecycle :: forall m. (MonadException m, MonadTunnelIO m) => LifecycleT m --> m
+ Control.Monad.Ology.Specific.LifecycleT: runLifecycle :: forall (m :: Type -> Type). (MonadException m, MonadTunnelIO m) => LifecycleT m --> m
- Control.Monad.Ology.Specific.LifecycleT: withLifecycle :: forall m a. (MonadException m, MonadTunnelIO m) => LifecycleT m a -> With m a
+ Control.Monad.Ology.Specific.LifecycleT: withLifecycle :: forall (m :: Type -> Type) a. (MonadException m, MonadTunnelIO m) => LifecycleT m a -> With m a
- Control.Monad.Ology.Specific.ReaderStateT: evalReaderStateT :: Monad m => ReaderStateT f m a -> (f --> m) -> m a
+ Control.Monad.Ology.Specific.ReaderStateT: evalReaderStateT :: forall m (f :: Type -> Type) a. Monad m => ReaderStateT f m a -> (f --> m) -> m a
- Control.Monad.Ology.Specific.ReaderStateT: readerStateLift :: (Monad f, Monad m) => f --> ReaderStateT f m
+ Control.Monad.Ology.Specific.ReaderStateT: readerStateLift :: forall (f :: Type -> Type) (m :: Type -> Type). (Monad f, Monad m) => f --> ReaderStateT f m
- Control.Monad.Ology.Specific.ReaderStateT: readerStateParamRef :: forall f m. Monad m => Param f --> Ref (ReaderStateT f m)
+ Control.Monad.Ology.Specific.ReaderStateT: readerStateParamRef :: forall (f :: Type -> Type) (m :: Type -> Type). Monad m => Param f --> Ref (ReaderStateT f m)
- Control.Monad.Ology.Specific.ReaderStateT: readerStateUpdate :: Monad m => (f --> f) -> ReaderStateT f m ()
+ Control.Monad.Ology.Specific.ReaderStateT: readerStateUpdate :: forall (m :: Type -> Type) (f :: Type -> Type). Monad m => (f --> f) -> ReaderStateT f m ()
- Control.Monad.Ology.Specific.ReaderStateT: type ReaderStateT f m = StateT (WRaised f m) m
+ Control.Monad.Ology.Specific.ReaderStateT: type ReaderStateT (f :: Type -> Type) (m :: Type -> Type) = StateT WRaised f m m
- Control.Monad.Ology.Specific.ReaderT: readerTUnliftToT :: forall t m. (MonadTransUnlift t, MonadTunnelIO m) => ReaderT (WUnlift MonadTunnelIO t) m --> t m
+ Control.Monad.Ology.Specific.ReaderT: readerTUnliftToT :: forall (t :: TransKind) (m :: Type -> Type). (MonadTransUnlift t, MonadTunnelIO m) => ReaderT (WUnlift MonadTunnelIO t) m --> t m
- Control.Monad.Ology.Specific.ReaderT: tToReaderTUnlift :: MonadTunnelIO m => t m --> ReaderT (WUnlift Monad t) m
+ Control.Monad.Ology.Specific.ReaderT: tToReaderTUnlift :: forall (m :: Type -> Type) (t :: (Type -> Type) -> Type -> Type). MonadTunnelIO m => t m --> ReaderT (WUnlift Monad t) m
- Control.Monad.Ology.Specific.ReaderT: with :: r -> ReaderT r m a -> ReaderT r m a
+ Control.Monad.Ology.Specific.ReaderT: with :: forall r (m :: Type -> Type) a. r -> ReaderT r m a -> ReaderT r m a
- Control.Monad.Ology.Specific.ResultT: catchR :: forall m e e' a. Monad m => ResultT e m a -> (e -> ResultT e' m a) -> ResultT e' m a
+ Control.Monad.Ology.Specific.ResultT: catchR :: forall (m :: Type -> Type) e e' a. Monad m => ResultT e m a -> (e -> ResultT e' m a) -> ResultT e' m a
- Control.Monad.Ology.Specific.ResultT: resultExn :: forall m e. Monad m => Exn (ResultT e m) e
+ Control.Monad.Ology.Specific.ResultT: resultExn :: forall (m :: Type -> Type) e. Monad m => Exn (ResultT e m) e
- Control.Monad.Ology.Specific.ResultT: throwR :: forall m e a. Monad m => e -> ResultT e m a
+ Control.Monad.Ology.Specific.ResultT: throwR :: forall (m :: Type -> Type) e a. Monad m => e -> ResultT e m a
- Control.Monad.Ology.Specific.ResultT: type ResultT e = ComposeInner (Result e)
+ Control.Monad.Ology.Specific.ResultT: type ResultT e = ComposeInner Result e
- Control.Monad.Ology.Specific.StackT: MkStackT :: ApplyStack tt m a -> StackT (tt :: [TransKind]) m a
+ Control.Monad.Ology.Specific.StackT: MkStackT :: ApplyStack tt m a -> StackT (tt :: [TransKind]) (m :: Type -> Type) a
- Control.Monad.Ology.Specific.StackT: [unStackT] :: StackT (tt :: [TransKind]) m a -> ApplyStack tt m a
+ Control.Monad.Ology.Specific.StackT: [unStackT] :: StackT (tt :: [TransKind]) (m :: Type -> Type) a -> ApplyStack tt m a
- Control.Monad.Ology.Specific.StackT: class (MonadTransTunnel t, c (Tunnel t)) => WithTunnelConstraint c t
+ Control.Monad.Ology.Specific.StackT: class (MonadTransTunnel t, c Tunnel t) => WithTunnelConstraint (c :: Type -> Type -> Constraint) (t :: TransKind)
- Control.Monad.Ology.Specific.StackT: concatMonadTransStackUnliftDict :: forall tt1 tt2. (MonadTransStackUnlift tt1, MonadTransStackUnlift tt2) => Dict (MonadTransStackUnlift (Concat tt1 tt2))
+ Control.Monad.Ology.Specific.StackT: concatMonadTransStackUnliftDict :: forall (tt1 :: [TransKind]) (tt2 :: [TransKind]). (MonadTransStackUnlift tt1, MonadTransStackUnlift tt2) => Dict (MonadTransStackUnlift (Concat tt1 tt2))
- Control.Monad.Ology.Specific.StackT: consWStackUnlift :: forall t tt. IsStack (TransConstraint MonadUnliftIO) tt => WUnlift MonadUnliftIO t -> WStackUnlift tt -> WStackUnlift (t : tt)
+ Control.Monad.Ology.Specific.StackT: consWStackUnlift :: forall (t :: TransKind) (tt :: [TransKind]). IsStack (TransConstraint MonadUnliftIO) tt => WUnlift MonadUnliftIO t -> WStackUnlift tt -> WStackUnlift (t ': tt)
- Control.Monad.Ology.Specific.StackT: newtype StackT (tt :: [TransKind]) m a
+ Control.Monad.Ology.Specific.StackT: newtype StackT (tt :: [TransKind]) (m :: Type -> Type) a
- Control.Monad.Ology.Specific.StackT: stackBackHoist :: forall tt ma mb. (MonadTransStackUnlift tt, Monad ma, Monad mb) => (ma -/-> mb) -> ApplyStack tt ma -/-> ApplyStack tt mb
+ Control.Monad.Ology.Specific.StackT: stackBackHoist :: forall (tt :: [TransKind]) (ma :: Type -> Type) (mb :: Type -> Type). (MonadTransStackUnlift tt, Monad ma, Monad mb) => (ma -/-> mb) -> ApplyStack tt ma -/-> ApplyStack tt mb
- Control.Monad.Ology.Specific.StackT: stackCommute :: forall tta ttb m r. (MonadTransStackUnlift tta, MonadTransStackUnlift ttb, MonadTunnelIO m) => ApplyStack tta (ApplyStack ttb m) r -> ApplyStack ttb (ApplyStack tta m) r
+ Control.Monad.Ology.Specific.StackT: 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
- Control.Monad.Ology.Specific.StackT: stackConcatFst :: forall tt1 tt2 m. (MonadTransStackUnlift tt1, MonadTransStackUnlift tt2, Monad m) => ApplyStack tt1 m --> ApplyStack (Concat tt1 tt2) m
+ Control.Monad.Ology.Specific.StackT: stackConcatFst :: forall (tt1 :: [TransKind]) (tt2 :: [TransKind]) (m :: Type -> Type). (MonadTransStackUnlift tt1, MonadTransStackUnlift tt2, Monad m) => ApplyStack tt1 m --> ApplyStack (Concat tt1 tt2) m
- Control.Monad.Ology.Specific.StackT: stackConcatSnd :: forall tt1 tt2 m. (MonadTransStackUnlift tt1, MonadTransStackUnlift tt2, Monad m) => ApplyStack tt2 m --> ApplyStack (Concat tt1 tt2) m
+ Control.Monad.Ology.Specific.StackT: stackConcatSnd :: forall (tt1 :: [TransKind]) (tt2 :: [TransKind]) (m :: Type -> Type). (MonadTransStackUnlift tt1, MonadTransStackUnlift tt2, Monad m) => ApplyStack tt2 m --> ApplyStack (Concat tt1 tt2) m
- Control.Monad.Ology.Specific.StackT: stackHoist :: forall tt ma mb. (MonadTransStackTunnel tt, Monad ma, Monad mb) => (ma --> mb) -> ApplyStack tt ma --> ApplyStack tt mb
+ Control.Monad.Ology.Specific.StackT: stackHoist :: forall (tt :: [TransKind]) (ma :: Type -> Type) (mb :: Type -> Type). (MonadTransStackTunnel tt, Monad ma, Monad mb) => (ma --> mb) -> ApplyStack tt ma --> ApplyStack tt mb
- Control.Monad.Ology.Specific.StackT: stackLift :: forall tt m. (IsStack (TransConstraint Monad) tt, IsStack MonadTrans tt, Monad m) => m --> ApplyStack tt m
+ Control.Monad.Ology.Specific.StackT: stackLift :: forall (tt :: [TransKind]) (m :: Type -> Type). (IsStack (TransConstraint Monad) tt, IsStack MonadTrans tt, Monad m) => m --> ApplyStack tt m
- Control.Monad.Ology.Specific.StackT: stackLiftWithStackUnlift :: forall tt m r. (MonadTransStackUnlift tt, MonadIO m) => (StackUnlift tt -> m r) -> ApplyStack tt m r
+ Control.Monad.Ology.Specific.StackT: stackLiftWithStackUnlift :: forall (tt :: [TransKind]) m r. (MonadTransStackUnlift tt, MonadIO m) => (StackUnlift tt -> m r) -> ApplyStack tt m r
- Control.Monad.Ology.Specific.StackT: stackLiftWithUnlift :: forall tt m. (MonadTransStackUnlift tt, MonadTunnelIO m) => m -/-> ApplyStack tt m
+ Control.Monad.Ology.Specific.StackT: stackLiftWithUnlift :: forall (tt :: [TransKind]) (m :: Type -> Type). (MonadTransStackUnlift tt, MonadTunnelIO m) => m -/-> ApplyStack tt m
- Control.Monad.Ology.Specific.StackT: stackUnderliftIO :: forall tt m. (MonadTransStackTunnel tt, MonadIO m) => ApplyStack tt IO --> ApplyStack tt m
+ Control.Monad.Ology.Specific.StackT: stackUnderliftIO :: forall (tt :: [TransKind]) (m :: Type -> Type). (MonadTransStackTunnel tt, MonadIO m) => ApplyStack tt IO --> ApplyStack tt m
- Control.Monad.Ology.Specific.StackT: transStackConcatRefl :: forall (tt1 :: [TransKind]) (tt2 :: [TransKind]) m. MonadTransStackUnlift tt1 => ApplyStack (Concat tt1 tt2) m :~: ApplyStack tt1 (ApplyStack tt2 m)
+ Control.Monad.Ology.Specific.StackT: transStackConcatRefl :: forall (tt1 :: [TransKind]) (tt2 :: [TransKind]) (m :: Type -> Type). MonadTransStackUnlift tt1 => ApplyStack (Concat tt1 tt2) m :~: ApplyStack tt1 (ApplyStack tt2 m)
- Control.Monad.Ology.Specific.StackT: transStackDict :: forall cm tt m. (IsStack (TransConstraint cm) tt, cm m) => Dict (cm (ApplyStack tt m))
+ Control.Monad.Ology.Specific.StackT: transStackDict :: forall cm (tt :: [TransKind]) (m :: Type -> Type). (IsStack (TransConstraint cm) tt, cm m) => Dict (cm (ApplyStack tt m))
- Control.Monad.Ology.Specific.StackT: transStackExcept :: forall tt m e a. (MonadTransStackTunnel tt, Monad m) => ApplyStack tt (ExceptT e m) a -> ApplyStack tt m (Either e a)
+ Control.Monad.Ology.Specific.StackT: 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)
- Control.Monad.Ology.Specific.StackT: type StackUnlift (tt :: [TransKind]) = forall m. MonadUnliftIO m => ApplyStack tt m --> m
+ Control.Monad.Ology.Specific.StackT: type StackUnlift (tt :: [TransKind]) = forall (m :: Type -> Type). MonadUnliftIO m => ApplyStack tt m --> m
- Control.Monad.Ology.Specific.StackT: type IsStack ct = Is (ListType (Compose Dict ct))
+ Control.Monad.Ology.Specific.StackT: type IsStack (ct :: TransKind -> Constraint) = Is ListType Compose Dict ct
- Control.Monad.Ology.Specific.StackT: type MonadTransStackTunnel tt = (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)
+ 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)
- Control.Monad.Ology.Specific.StackT: type MonadTransStackUnlift tt = (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)
+ Control.Monad.Ology.Specific.StackT: 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)
- Control.Monad.Ology.Specific.StackT: witTransStackDict :: forall cm tt m. cm m => ListType (Compose Dict (TransConstraint cm)) tt -> Dict (cm (ApplyStack tt m))
+ Control.Monad.Ology.Specific.StackT: witTransStackDict :: forall cm (tt :: [TransKind]) (m :: Type -> Type). cm m => ListType (Compose Dict (TransConstraint cm)) tt -> Dict (cm (ApplyStack tt m))
- Control.Monad.Ology.Specific.StateT: liftStateT :: (Traversable f, Applicative m) => StateT s m a -> StateT (f s) m (f a)
+ Control.Monad.Ology.Specific.StateT: liftStateT :: forall f (m :: Type -> Type) s a. (Traversable f, Applicative m) => StateT s m a -> StateT (f s) m (f a)
- Control.Monad.Ology.Specific.StateT: mVarRunLocked :: MonadTunnelIO m => MVar s -> m --> m
+ Control.Monad.Ology.Specific.StateT: mVarRunLocked :: forall (m :: Type -> Type) s. MonadTunnelIO m => MVar s -> m --> m
- Control.Monad.Ology.Specific.StepT: MkStepT :: m (Either a (f (StepT f m a))) -> StepT f m a
+ Control.Monad.Ology.Specific.StepT: MkStepT :: m (Either a (f (StepT f m a))) -> StepT (f :: Type -> Type) (m :: Type -> Type) a
- Control.Monad.Ology.Specific.StepT: [unStepT] :: StepT f m a -> m (Either a (f (StepT f m a)))
+ Control.Monad.Ology.Specific.StepT: [unStepT] :: StepT (f :: Type -> Type) (m :: Type -> Type) a -> m (Either a (f (StepT f m a)))
- Control.Monad.Ology.Specific.StepT: newtype StepT f m a
+ Control.Monad.Ology.Specific.StepT: newtype StepT (f :: Type -> Type) (m :: Type -> Type) a
- Control.Monad.Ology.Specific.StepT: pendingStep :: (Functor f, Monad m) => f --> StepT f m
+ Control.Monad.Ology.Specific.StepT: pendingStep :: forall (f :: Type -> Type) (m :: Type -> Type). (Functor f, Monad m) => f --> StepT f m
- Control.Monad.Ology.Specific.StepT: runSteps :: Monad m => Extract f -> StepT f m --> m
+ Control.Monad.Ology.Specific.StepT: runSteps :: forall (m :: Type -> Type) (f :: Type -> Type). Monad m => Extract f -> StepT f m --> m
- Control.Monad.Ology.Specific.WithT: MkWithT :: With m a -> WithT m a
+ Control.Monad.Ology.Specific.WithT: MkWithT :: With m a -> WithT (m :: k -> Type) a
- Control.Monad.Ology.Specific.WithT: [unWithT] :: WithT m a -> With m a
+ Control.Monad.Ology.Specific.WithT: [unWithT] :: WithT (m :: k -> Type) a -> With m a
- Control.Monad.Ology.Specific.WithT: liftWithT :: forall t m. (MonadTransUnlift t, MonadTunnelIO m) => WithT m --> WithT (t m)
+ Control.Monad.Ology.Specific.WithT: liftWithT :: forall (t :: TransKind) (m :: Type -> Type). (MonadTransUnlift t, MonadTunnelIO m) => WithT m --> WithT (t m)
- Control.Monad.Ology.Specific.WithT: mapWithT :: (m --> m) -> WithT m ()
+ Control.Monad.Ology.Specific.WithT: mapWithT :: forall {k} (m :: k -> Type). (m --> m) -> WithT m ()
- Control.Monad.Ology.Specific.WithT: newtype WithT m a
+ Control.Monad.Ology.Specific.WithT: newtype WithT (m :: k -> Type) a
- Control.Monad.Ology.Specific.WithT: pickWithT :: forall m a. Monad m => m (a, m ()) -> WithT m a
+ Control.Monad.Ology.Specific.WithT: pickWithT :: Monad m => m (a, m ()) -> WithT m a
- Control.Monad.Ology.Specific.WithT: unpickWithT :: forall m a. MonadCoroutine m => WithT m a -> m (a, m ())
+ Control.Monad.Ology.Specific.WithT: unpickWithT :: MonadCoroutine m => WithT m a -> m (a, m ())
- Control.Monad.Ology.Specific.WithT: withParamRef :: forall m. Monad m => Param m --> Ref (WithT m)
+ Control.Monad.Ology.Specific.WithT: withParamRef :: forall (m :: Type -> Type). Monad m => Param m --> Ref (WithT m)
- Control.Monad.Ology.Specific.WithT: withTMap :: WithT m () -> m --> m
+ Control.Monad.Ology.Specific.WithT: withTMap :: forall {k} (m :: k -> Type). WithT m () -> m --> m
- Control.Monad.Ology.Specific.WriterT: collect :: (Monad m, Monoid w) => WriterT w m a -> WriterT w m (a, w)
+ Control.Monad.Ology.Specific.WriterT: collect :: forall (m :: Type -> Type) w a. (Monad m, Monoid w) => WriterT w m a -> WriterT w m (a, w)
Files
- changelog.md +5/−0
- monadology.cabal +19/−61
- src/Control/Monad/Ology/Data/Param.hs +7/−0
- src/Control/Monad/Ology/Data/Ref.hs +13/−10
- src/Control/Monad/Ology/General/Catch.hs +1/−1
- src/Control/Monad/Ology/General/Coroutine.hs +2/−7
- src/Control/Monad/Ology/General/Exception.hs +1/−1
- src/Control/Monad/Ology/General/Exception/Class.hs +1/−1
- src/Control/Monad/Ology/General/Function.hs +2/−0
- src/Control/Monad/Ology/General/Throw.hs +1/−1
- src/Control/Monad/Ology/General/Trans/AskUnlift.hs +2/−3
- src/Control/Monad/Ology/General/Trans/Tunnel.hs +15/−1
- src/Control/Monad/Ology/General/Trans/Unlift.hs +2/−2
- src/Control/Monad/Ology/Specific/ComposeInner.hs +34/−29
- src/Control/Monad/Ology/Specific/ComposeOuter.hs +22/−20
- src/Control/Monad/Ology/Specific/ComposeT.hs +7/−7
- src/Control/Monad/Ology/Specific/ContT.hs +1/−1
- src/Control/Monad/Ology/Specific/ExceptT.hs +1/−1
- src/Control/Monad/Ology/Specific/LifecycleT.hs +1/−1
- src/Control/Monad/Ology/Specific/Result.hs +1/−1
- src/Control/Monad/Ology/Specific/StackT.hs +1/−3
- src/Control/Monad/Ology/Specific/StepT.hs +11/−0
- src/Control/Monad/Ology/Specific/WriterT.hs +1/−1
- test/Exception.hs +1/−1
changelog.md view
@@ -1,3 +1,8 @@+## [0.4] - 2024-12-15++- fix for GHC 9.8, 9.10+- add refPutRestore+ ## [0.3] - 2023-07-25 - LifecycleT: improve to make closing more robust
monadology.cabal view
@@ -1,11 +1,11 @@ cabal-version: 2.2 --- This file has been generated from package.yaml by hpack version 0.35.0.+-- This file has been generated from package.yaml by hpack version 0.37.0. -- -- see: https://github.com/sol/hpack name: monadology-version: 0.3+version: 0.4 synopsis: The best ideas in monad-related classes and types. description: Monadology is intended as a collection of the best ideas in monad-related classes and types, with a focus on correctness and elegance, and theoretical understanding, rather than practical performance. category: Monads@@ -13,15 +13,14 @@ bug-reports: https://github.com/AshleyYakeley/monadology/issues author: Ashley Yakeley maintainer: <ashley@semantic.org>-copyright: (c) 2017-2023 Ashley Yakeley+copyright: (c) 2017-2024 Ashley Yakeley license: BSD-2-Clause license-file: LICENSE build-type: Simple tested-with:- GHC == 9.2.8- , GHC == 9.4.5- , GHC == 9.6.2-extra-source-files:+ GHC == 9.8.4+ , GHC == 9.10.1+extra-doc-files: changelog.md source-repository head@@ -81,58 +80,38 @@ default-extensions: AllowAmbiguousTypes Arrows- ConstraintKinds DataKinds DefaultSignatures- EmptyCase- EmptyDataDecls- ExistentialQuantification- FlexibleContexts- FlexibleInstances- ForeignFunctionInterface+ DerivingStrategies FunctionalDependencies- GADTs- GeneralizedNewtypeDeriving ImplicitParams NoImplicitPrelude- InstanceSigs- KindSignatures LambdaCase- MultiParamTypeClasses OverloadedLabels OverloadedStrings PartialTypeSignatures- PatternGuards PatternSynonyms- PolyKinds QuantifiedConstraints- RankNTypes RecordWildCards RecursiveDo RoleAnnotations- ScopedTypeVariables- StandaloneDeriving- StandaloneKindSignatures NoStarIsType TemplateHaskell- TypeApplications+ TypeAbstractions TypeFamilies TypeFamilyDependencies- TypeInType- TypeOperators- TypeSynonymInstances UndecidableInstances UndecidableSuperClasses ViewPatterns- ghc-options: -Wall -Wincomplete-uni-patterns -Wincomplete-record-updates -Wcompat -Wnoncanonical-monad-instances -Wno-partial-type-signatures+ ghc-options: -Weverything -Wno-missing-import-lists -Wno-missing-export-lists -Wno-unsafe -Wno-missing-safe-haskell-mode -Wno-missing-kind-signatures -Wno-partial-type-signatures -Wno-missing-role-annotations -Wno-monomorphism-restriction -Wno-missing-local-signatures -Wno-partial-fields -Wno-all-missed-specialisations -Wno-missed-specialisations build-depends:- base >=4.15 && <5- , constraints >=0.13+ base >=4.19 && <5+ , constraints >=0.14 , invariant >=0.6- , transformers >=0.5+ , transformers >=0.6 , type-rig >=0.1- , witness >=0.6.1- default-language: Haskell2010+ , witness >=0.7+ default-language: GHC2021 test-suite test type: exitcode-stdio-1.0@@ -149,55 +128,34 @@ default-extensions: AllowAmbiguousTypes Arrows- ConstraintKinds DataKinds DefaultSignatures- EmptyCase- EmptyDataDecls- ExistentialQuantification- FlexibleContexts- FlexibleInstances- ForeignFunctionInterface+ DerivingStrategies FunctionalDependencies- GADTs- GeneralizedNewtypeDeriving ImplicitParams NoImplicitPrelude- InstanceSigs- KindSignatures LambdaCase- MultiParamTypeClasses OverloadedLabels OverloadedStrings PartialTypeSignatures- PatternGuards PatternSynonyms- PolyKinds QuantifiedConstraints- RankNTypes RecordWildCards RecursiveDo RoleAnnotations- ScopedTypeVariables- StandaloneDeriving- StandaloneKindSignatures NoStarIsType TemplateHaskell- TypeApplications+ TypeAbstractions TypeFamilies TypeFamilyDependencies- TypeInType- TypeOperators- TypeSynonymInstances UndecidableInstances UndecidableSuperClasses ViewPatterns- ghc-options: -Wall -Wincomplete-uni-patterns -Wincomplete-record-updates -Wcompat -Wnoncanonical-monad-instances -Wno-partial-type-signatures -threaded+ ghc-options: -Weverything -Wno-missing-import-lists -Wno-missing-export-lists -Wno-unsafe -Wno-missing-safe-haskell-mode -Wno-missing-kind-signatures -Wno-partial-type-signatures -Wno-missing-role-annotations -Wno-monomorphism-restriction -Wno-missing-local-signatures -Wno-partial-fields -Wno-all-missed-specialisations -Wno-missed-specialisations -threaded build-depends:- base >=4.15 && <5+ base >=4.19 && <5 , monadology , tasty >=1.4 , tasty-hunit >=0.10 , text >=2.0- , transformers >=0.5- default-language: Haskell2010+ default-language: GHC2021
src/Control/Monad/Ology/Data/Param.hs view
@@ -20,6 +20,13 @@ rUnit = MkParam (pure ()) (\() -> id) pa <***> pb = MkParam (liftA2 (,) (paramAsk pa) (paramAsk pb)) (\(a, b) -> paramWith pa a . paramWith pb b) +paramAsks ::+ forall m a b. Monad m+ => Param m a+ -> (a -> b)+ -> m b+paramAsks param ab = fmap ab $ paramAsk param+ paramLocalM :: forall m a. Monad m => Param m a
src/Control/Monad/Ology/Data/Ref.hs view
@@ -4,11 +4,11 @@ import Control.Monad.Ology.Data.Prod import Control.Monad.Ology.General import Control.Monad.Ology.Specific.StateT-import qualified Control.Monad.ST.Lazy as Lazy-import qualified Control.Monad.ST.Strict as Strict+import Control.Monad.ST.Lazy qualified as Lazy+import Control.Monad.ST.Strict qualified as Strict import Data.IORef-import qualified Data.STRef.Lazy as Lazy-import qualified Data.STRef.Strict as Strict+import Data.STRef.Lazy qualified as Lazy+import Data.STRef.Strict qualified as Strict import Import -- | A reference of a monad (as in 'StateT').@@ -39,6 +39,13 @@ refRestore :: MonadException m => Ref m a -> m --> m refRestore ref mr = bracketNoMask (refGet ref) (refPut ref) $ \_ -> mr +-- | Put and restore the original value of this reference after the operation.+refPutRestore :: MonadException m => Ref m a -> a -> m --> m+refPutRestore ref a mr =+ refRestore ref $ do+ refPut ref a+ mr+ lensMapRef :: forall m a b. Monad m => Lens' a b@@ -82,10 +89,7 @@ refParam ref = let paramAsk = refGet ref paramWith :: a -> m --> m- paramWith a mr =- refRestore ref $ do- refPut ref a- mr+ paramWith = refPutRestore ref in MkParam {..} -- | Use a reference as a product.@@ -97,8 +101,7 @@ prodTell a = refModify ref $ (<>) a prodCollect :: forall r. m r -> m (r, a) prodCollect mr =- refRestore ref $ do- refPut ref mempty+ refPutRestore ref mempty $ do r <- mr a <- refGet ref return (r, a)
src/Control/Monad/Ology/General/Catch.hs view
@@ -1,6 +1,6 @@ module Control.Monad.Ology.General.Catch where -import qualified Control.Exception as CE+import Control.Exception qualified as CE import Control.Monad.Ology.General.Exception import Control.Monad.Ology.General.Throw import Control.Monad.Ology.Specific.Result
src/Control/Monad/Ology/General/Coroutine.hs view
@@ -1,9 +1,7 @@ module Control.Monad.Ology.General.Coroutine where -import Control.Monad.Ology.General.Trans.Hoist import Control.Monad.Ology.General.Trans.Trans import Control.Monad.Ology.General.Trans.Tunnel-import Control.Monad.Ology.General.Trans.Unlift import Control.Monad.Ology.Specific.CoroutineT import Control.Monad.Ology.Specific.StepT import Import@@ -33,11 +31,8 @@ putMVar outvar $ Left r takeMVar outvar -instance (MonadTransUnlift t, MonadCoroutine m, MonadTunnelIO m, Monad (t m)) => MonadCoroutine (t m) where- coroutineSuspend call =- MkStepT $- liftWithUnlift $ \unlift ->- (fmap $ fmap $ fmap $ hoist lift) $ unStepT $ coroutineSuspend $ \pmq -> unlift $ call $ \p -> lift $ pmq p+instance (MonadTransTunnel t, MonadCoroutine m) => MonadCoroutine (t m) where+ coroutineSuspend call = underTunnelStepT $ \tun -> coroutineSuspend $ \pmq -> tun $ call $ \p -> lift $ pmq p -- | A type synoynm for a common pattern for closing opened resources, e.g. -- 'System.IO.withFile',
src/Control/Monad/Ology/General/Exception.hs view
@@ -5,7 +5,7 @@ , CE.evaluate ) where -import qualified Control.Exception as CE+import Control.Exception qualified as CE import Control.Monad.Ology.General.Exception.Class import Control.Monad.Ology.General.Function import Control.Monad.Ology.General.Trans.Hoist
src/Control/Monad/Ology/General/Exception/Class.hs view
@@ -1,6 +1,6 @@ module Control.Monad.Ology.General.Exception.Class where -import qualified Control.Exception as CE+import Control.Exception qualified as CE import Control.Monad.Ology.Specific.Result import Import
src/Control/Monad/Ology/General/Function.hs view
@@ -30,6 +30,7 @@ type Raised :: forall k. (k -> Type) -> (k -> Type) -> Type type Raised p q = forall a. p a -> q a +type (-->) :: forall k. (k -> Type) -> (k -> Type) -> Type type p --> q = Raised p q type WRaised :: forall k. (k -> Type) -> (k -> Type) -> Type@@ -50,6 +51,7 @@ type Backraised :: forall k. (k -> Type) -> (k -> Type) -> Type type Backraised ma mb = forall r. ((mb --> ma) -> ma r) -> mb r +type (-/->) :: forall k. (k -> Type) -> (k -> Type) -> Type type ma -/-> mb = Backraised ma mb backraisedToRaised :: (ma -/-> mb) -> ma --> mb
src/Control/Monad/Ology/General/Throw.hs view
@@ -6,7 +6,7 @@ , CE.IOException ) where -import qualified Control.Exception as CE+import Control.Exception qualified as CE import Control.Monad.Ology.General.Exception import Control.Monad.Ology.Specific.Result import Import
src/Control/Monad/Ology/General/Trans/AskUnlift.hs view
@@ -3,7 +3,6 @@ import Control.Monad.Ology.General.Extract import Control.Monad.Ology.General.Function import Control.Monad.Ology.General.IO-import Control.Monad.Ology.General.Identity import Control.Monad.Ology.General.Outer import Control.Monad.Ology.General.Trans.Constraint import Control.Monad.Ology.General.Trans.Trans@@ -17,7 +16,7 @@ askUnlift :: forall m. Monad m => t m (WUnlift Monad t)- default askUnlift :: forall m. (MonadIdentity (Tunnel t), Monad m) => t m (WUnlift Monad t)+ default askUnlift :: forall m. Monad m => t m (WUnlift Monad t) askUnlift = tunnel $ \unlift -> pure $ pure $ MkWUnlift $ \tma -> fmap mToValue $ unlift tma -- | A monad that has no effects over IO (such as state change or output).@@ -39,7 +38,7 @@ hasTransConstraint = withTransConstraintDict @MonadFail $ withTransConstraintDict @MonadIO $ withTransConstraintDict @MonadFix $ Dict -instance MonadOuter outer => MonadTransAskUnlift (ComposeOuter outer)+instance forall outer. MonadOuter outer => MonadTransAskUnlift (ComposeOuter outer) contractT :: forall (t :: TransKind) m. (MonadTransAskUnlift t, Monad m)
src/Control/Monad/Ology/General/Trans/Tunnel.hs view
@@ -24,6 +24,13 @@ -> t m1 --> t m2 tunnelHoist mma sm1 = tunnel $ \tun -> mma $ tun sm1 +hoistWith ::+ forall t m1 m2 f r. (MonadTransTunnel t, Traversable f, Monad m1, Monad m2)+ => (forall a. m1 a -> m2 (f a))+ -> t m1 r+ -> t m2 (f r)+hoistWith mma sm1 = tunnel $ \tun -> fmap sequenceA $ mma $ tun sm1+ backHoist :: (MonadTransTunnel t, Monad ma, Monad mb) => (ma -/-> mb) -> t ma -/-> t mb backHoist wt tm = tunnel $ \unlift -> wt $ \tba -> unlift $ tm $ hoist tba @@ -52,13 +59,20 @@ => ta (tb m) -/-> tb (ta m) commuteTBack call = commuteT $ call commuteT -instance MonadInner inner => MonadTransTunnel (ComposeInner inner) where+instance forall inner. MonadInner inner => MonadTransTunnel (ComposeInner inner) where type Tunnel (ComposeInner inner) = inner tunnel call = MkComposeInner $ call unComposeInner class (MonadHoistIO m, MonadInner (TunnelIO m)) => MonadTunnelIO m where type TunnelIO m :: Type -> Type tunnelIO :: forall r. ((forall a. m a -> IO (TunnelIO m a)) -> IO (TunnelIO m r)) -> m r++hoistWithIO ::+ forall m f r. (MonadTunnelIO m, Traversable f)+ => (forall a. IO a -> IO (f a))+ -> m r+ -> m (f r)+hoistWithIO iifa mr = tunnelIO $ \tun -> fmap sequenceA $ iifa $ tun mr instance MonadTunnelIO IO where type TunnelIO IO = Identity
src/Control/Monad/Ology/General/Trans/Unlift.hs view
@@ -41,7 +41,7 @@ => WBackraised m (t m) wLiftWithUnlift = MkWBackraised $ \call -> liftWithUnlift $ \unlift -> call unlift -composeUnliftRaised :: (MonadTransUnlift t, MonadUnliftIO m) => Unlift Functor t -> (m --> n) -> (t m --> n)+composeUnliftRaised :: MonadUnliftIO m => Unlift Functor t -> (m --> n) -> (t m --> n) composeUnliftRaised rt rm tma = rm $ rt tma composeUnliftRaisedCommute ::@@ -68,7 +68,7 @@ hasTransConstraint = withTransConstraintDict @MonadFail $ withTransConstraintDict @MonadIO $ withTransConstraintDict @MonadFix $ Dict -instance MonadOuter outer => MonadTransUnlift (ComposeOuter outer) where+instance forall outer. MonadOuter outer => MonadTransUnlift (ComposeOuter outer) where liftWithUnlift call = MkComposeOuter $ do MkWExtract extract <- getExtract
src/Control/Monad/Ology/Specific/ComposeInner.hs view
@@ -18,22 +18,22 @@ { unComposeInner :: outer (inner a) } -instance (Foldable inner, Foldable outer, Functor outer) => Foldable (ComposeInner inner outer) where+instance forall inner outer. (Foldable inner, Foldable outer, Functor outer) => Foldable (ComposeInner inner outer) where foldMap am (MkComposeInner oia) = foldMap id $ fmap (foldMap am) oia -instance (Traversable inner, Traversable outer) => Traversable (ComposeInner inner outer) where+instance forall inner outer. (Traversable inner, Traversable outer) => Traversable (ComposeInner inner outer) where traverse afb (MkComposeInner oia) = fmap MkComposeInner $ traverse (traverse afb) oia -instance Traversable inner => TransConstraint Traversable (ComposeInner inner) where+instance forall inner. Traversable inner => TransConstraint Traversable (ComposeInner inner) where hasTransConstraint = Dict -instance (Functor inner, Functor outer) => Functor (ComposeInner inner outer) where+instance forall inner outer. (Functor inner, Functor outer) => Functor (ComposeInner inner outer) where fmap ab (MkComposeInner oia) = MkComposeInner $ fmap (fmap ab) oia -instance Functor inner => TransConstraint Functor (ComposeInner inner) where+instance forall inner. Functor inner => TransConstraint Functor (ComposeInner inner) where hasTransConstraint = Dict -instance (MonadInner inner, Monad outer) => Applicative (ComposeInner inner outer) where+instance forall inner outer. (MonadInner inner, Monad outer) => Applicative (ComposeInner inner outer) where pure a = MkComposeInner $ pure $ pure a -- cannot use obvious definition for <*>, because that would incorrectly execute the outer part of ma even if mab fails mab <*> ma = do@@ -41,7 +41,8 @@ a <- ma return $ ab a -instance (MonadInner inner, Monad outer, Alternative inner) => Alternative (ComposeInner inner outer) where+instance forall inner outer. (MonadInner inner, Monad outer, Alternative inner) =>+ Alternative (ComposeInner inner outer) where empty = MkComposeInner $ pure empty -- cannot use obvious definition for <|> for similar reasons as in <*> (MkComposeInner oia) <|> cb = do@@ -53,7 +54,7 @@ Just a -> return a Nothing -> cb -instance (MonadInner inner, Monad outer) => Monad (ComposeInner inner outer) where+instance forall inner outer. (MonadInner inner, Monad outer) => Monad (ComposeInner inner outer) where return = pure (MkComposeInner oia) >>= p = MkComposeInner $ do@@ -64,16 +65,16 @@ return $ ia >> ib FailureResult e -> return $ throwExc e -instance MonadInner inner => TransConstraint Monad (ComposeInner inner) where+instance forall inner. MonadInner inner => TransConstraint Monad (ComposeInner inner) where hasTransConstraint = Dict -instance (MonadInner inner, MonadFail outer) => MonadFail (ComposeInner inner outer) where+instance forall inner outer. (MonadInner inner, MonadFail outer) => MonadFail (ComposeInner inner outer) where fail s = lift $ fail s -instance MonadInner inner => TransConstraint MonadFail (ComposeInner inner) where+instance forall inner. MonadInner inner => TransConstraint MonadFail (ComposeInner inner) where hasTransConstraint = Dict -instance (MonadInner inner, MonadInner outer) => MonadInner (ComposeInner inner outer) where+instance forall inner outer. (MonadInner inner, MonadInner outer) => MonadInner (ComposeInner inner outer) where retrieveInner (MkComposeInner oia) = case retrieveInner oia of SuccessResult ia ->@@ -82,10 +83,11 @@ FailureResult e -> FailureResult $ Left e FailureResult e -> FailureResult $ Right e -instance MonadInner inner => TransConstraint MonadInner (ComposeInner inner) where+instance forall inner. MonadInner inner => TransConstraint MonadInner (ComposeInner inner) where hasTransConstraint = Dict -instance (MonadInner inner, MonadOuter inner, MonadOuter outer) => MonadOuter (ComposeInner inner outer) where+instance forall inner outer. (MonadInner inner, MonadOuter inner, MonadOuter outer) =>+ MonadOuter (ComposeInner inner outer) where getExtract = MkComposeInner $ do MkWExtract oaa <- getExtract@@ -93,10 +95,10 @@ MkWExtract iaa <- getExtract return $ MkWExtract $ \(MkComposeInner oia) -> iaa $ oaa oia -instance (MonadInner inner, MonadOuter inner) => TransConstraint MonadOuter (ComposeInner inner) where+instance forall inner. (MonadInner inner, MonadOuter inner) => TransConstraint MonadOuter (ComposeInner inner) where hasTransConstraint = Dict -instance (MonadInner inner, MonadFix outer) => MonadFix (ComposeInner inner outer) where+instance forall inner outer. (MonadInner inner, MonadFix outer) => MonadFix (ComposeInner inner outer) where mfix ama = MkComposeInner $ mfix $ \ia ->@@ -106,32 +108,35 @@ SuccessResult a -> a FailureResult _ -> error "bad ComposeInner mfix" -instance MonadInner inner => TransConstraint MonadFix (ComposeInner inner) where+instance forall inner. MonadInner inner => TransConstraint MonadFix (ComposeInner inner) where hasTransConstraint = Dict -instance (MonadInner inner, Monad outer, Alternative inner) => MonadPlus (ComposeInner inner outer)+instance forall inner outer. (MonadInner inner, Monad outer, Alternative inner) => MonadPlus (ComposeInner inner outer) -instance (MonadExtract inner, MonadExtract outer) => MonadExtract (ComposeInner inner outer) where+instance forall inner outer. (MonadExtract inner, MonadExtract outer) => MonadExtract (ComposeInner inner outer) where mToValue (MkComposeInner oia) = mToValue $ mToValue oia -instance MonadExtract inner => TransConstraint MonadExtract (ComposeInner inner) where+instance forall inner. MonadExtract inner => TransConstraint MonadExtract (ComposeInner inner) where hasTransConstraint = Dict -instance (MonadIdentity inner, MonadIdentity outer) => MonadIdentity (ComposeInner inner outer)+instance forall inner outer. (MonadIdentity inner, MonadIdentity outer) => MonadIdentity (ComposeInner inner outer) -instance MonadIdentity inner => TransConstraint MonadIdentity (ComposeInner inner) where+instance forall inner. MonadIdentity inner => TransConstraint MonadIdentity (ComposeInner inner) where hasTransConstraint = Dict -instance (MonadInner inner, MonadIO outer) => MonadIO (ComposeInner inner outer) where+instance forall inner outer. (MonadInner inner, MonadIO outer) => MonadIO (ComposeInner inner outer) where liftIO ioa = lift $ liftIO ioa -instance MonadInner inner => TransConstraint MonadIO (ComposeInner inner) where+instance forall inner. MonadInner inner => TransConstraint MonadIO (ComposeInner inner) where hasTransConstraint = Dict -liftInner :: Applicative outer => inner --> ComposeInner inner outer+liftInner ::+ forall inner outer. Applicative outer+ => inner --> ComposeInner inner outer liftInner na = MkComposeInner $ pure na -instance (MonadInner inner, MonadException inner, MonadException m) => MonadException (ComposeInner inner m) where+instance forall inner m. (MonadInner inner, MonadException inner, MonadException m) =>+ MonadException (ComposeInner inner m) where type Exc (ComposeInner inner m) = Either (Exc inner) (Exc m) throwExc (Left e) = liftInner $ throwExc e throwExc (Right e) = lift $ throwExc e@@ -143,11 +148,11 @@ SuccessResult (FailureResult e) -> unComposeInner $ handler $ Left e SuccessResult (SuccessResult a) -> return $ return a -instance (MonadInner inner, MonadException inner) => TransConstraint MonadException (ComposeInner inner) where+instance forall inner. (MonadInner inner, MonadException inner) => TransConstraint MonadException (ComposeInner inner) where hasTransConstraint = Dict -instance MonadInner inner => MonadTrans (ComposeInner inner) where+instance forall inner. MonadInner inner => MonadTrans (ComposeInner inner) where lift ma = MkComposeInner $ fmap pure ma -instance MonadInner inner => MonadTransHoist (ComposeInner inner) where+instance forall inner. MonadInner inner => MonadTransHoist (ComposeInner inner) where hoist ii (MkComposeInner ma) = MkComposeInner $ ii ma
src/Control/Monad/Ology/Specific/ComposeOuter.hs view
@@ -15,29 +15,29 @@ { unComposeOuter :: outer (inner a) } -instance (Foldable inner, Foldable outer, Functor outer) => Foldable (ComposeOuter outer inner) where+instance forall outer inner. (Foldable inner, Foldable outer, Functor outer) => Foldable (ComposeOuter outer inner) where foldMap am (MkComposeOuter oia) = foldMap id $ fmap (foldMap am) oia -instance (Traversable inner, Traversable outer) => Traversable (ComposeOuter outer inner) where+instance forall outer inner. (Traversable inner, Traversable outer) => Traversable (ComposeOuter outer inner) where traverse afb (MkComposeOuter oia) = fmap MkComposeOuter $ traverse (traverse afb) oia -instance Traversable outer => TransConstraint Traversable (ComposeOuter outer) where+instance forall outer. Traversable outer => TransConstraint Traversable (ComposeOuter outer) where hasTransConstraint = Dict -instance (Functor inner, Functor outer) => Functor (ComposeOuter outer inner) where+instance forall outer inner. (Functor inner, Functor outer) => Functor (ComposeOuter outer inner) where fmap ab (MkComposeOuter oia) = MkComposeOuter $ fmap (fmap ab) oia -instance Functor outer => TransConstraint Functor (ComposeOuter outer) where+instance forall outer. Functor outer => TransConstraint Functor (ComposeOuter outer) where hasTransConstraint = Dict -instance (Applicative inner, Applicative outer) => Applicative (ComposeOuter outer inner) where+instance forall outer inner. (Applicative inner, Applicative outer) => Applicative (ComposeOuter outer inner) where pure a = MkComposeOuter $ pure $ pure a MkComposeOuter mab <*> MkComposeOuter ma = MkComposeOuter $ liftA2 (<*>) mab ma -instance Applicative outer => TransConstraint Applicative (ComposeOuter outer) where+instance forall outer. Applicative outer => TransConstraint Applicative (ComposeOuter outer) where hasTransConstraint = Dict -instance (Monad inner, MonadOuter outer) => Monad (ComposeOuter outer inner) where+instance forall outer inner. (Monad inner, MonadOuter outer) => Monad (ComposeOuter outer inner) where return = pure MkComposeOuter oia >>= f = MkComposeOuter $ do@@ -47,45 +47,47 @@ a <- ia oaa $ unComposeOuter $ f a -instance MonadOuter outer => TransConstraint Monad (ComposeOuter outer) where+instance forall outer. MonadOuter outer => TransConstraint Monad (ComposeOuter outer) where hasTransConstraint = Dict -liftOuter :: (Functor outer, Applicative inner) => outer --> ComposeOuter outer inner+liftOuter ::+ forall outer inner. (Functor outer, Applicative inner)+ => outer --> ComposeOuter outer inner liftOuter oa = MkComposeOuter $ fmap pure oa -instance MonadOuter outer => MonadTrans (ComposeOuter outer) where+instance forall outer. MonadOuter outer => MonadTrans (ComposeOuter outer) where lift ma = MkComposeOuter $ pure ma -instance (MonadOuter outer, MonadIO inner) => MonadIO (ComposeOuter outer inner) where+instance forall outer inner. (MonadOuter outer, MonadIO inner) => MonadIO (ComposeOuter outer inner) where liftIO ioa = lift $ liftIO ioa -instance MonadOuter outer => TransConstraint MonadIO (ComposeOuter outer) where+instance forall outer. MonadOuter outer => TransConstraint MonadIO (ComposeOuter outer) where hasTransConstraint = Dict -instance (MonadOuter outer, MonadFail inner) => MonadFail (ComposeOuter outer inner) where+instance forall outer inner. (MonadOuter outer, MonadFail inner) => MonadFail (ComposeOuter outer inner) where fail e = MkComposeOuter $ return $ fail e -instance MonadOuter outer => TransConstraint MonadFail (ComposeOuter outer) where+instance forall outer. MonadOuter outer => TransConstraint MonadFail (ComposeOuter outer) where hasTransConstraint = Dict -instance (MonadOuter outer, MonadFix inner) => MonadFix (ComposeOuter outer inner) where+instance forall outer inner. (MonadOuter outer, MonadFix inner) => MonadFix (ComposeOuter outer inner) where mfix f = MkComposeOuter $ do MkWExtract extract <- getExtract return $ mfix $ \a -> extract $ unComposeOuter $ f a -instance MonadOuter outer => TransConstraint MonadFix (ComposeOuter outer) where+instance forall outer. MonadOuter outer => TransConstraint MonadFix (ComposeOuter outer) where hasTransConstraint = Dict -instance (MonadOuter outer, MonadException m) => MonadException (ComposeOuter outer m) where+instance forall outer m. (MonadOuter outer, MonadException m) => MonadException (ComposeOuter outer m) where type Exc (ComposeOuter outer m) = Exc m throwExc e = lift $ throwExc e catchExc tma handler = tunnel $ \unlift -> catchExc (unlift tma) $ \e -> unlift $ handler e -instance MonadOuter outer => MonadTransHoist (ComposeOuter outer) where+instance forall outer. MonadOuter outer => MonadTransHoist (ComposeOuter outer) where hoist = tunnelHoist -instance MonadOuter outer => MonadTransTunnel (ComposeOuter outer) where+instance forall outer. MonadOuter outer => MonadTransTunnel (ComposeOuter outer) where type Tunnel (ComposeOuter outer) = Identity tunnel call = MkComposeOuter $ do
src/Control/Monad/Ology/Specific/ComposeT.hs view
@@ -16,7 +16,7 @@ type ComposeT :: TransKind -> TransKind -> TransKind newtype ComposeT (outerT :: TransKind) (innerT :: TransKind) (m :: Type -> Type) (a :: Type) = MkComposeT { unComposeT :: outerT (innerT m) a- } deriving (Functor, Applicative, Alternative, Monad, MonadFail, MonadIO, MonadFix, MonadPlus)+ } deriving newtype (Functor, Applicative, Alternative, Monad, MonadFail, MonadIO, MonadFix, MonadPlus) liftOuterComposeT :: forall outerT innerT m a. (MonadTransTunnel outerT, MonadTrans innerT, TransConstraint Monad innerT, Monad m)@@ -53,14 +53,14 @@ Dict -> MkComposeT $ liftWithUnlift $ \unlift -> call $ \(MkComposeT ttma) -> unlift ttma composeTUnlift ::- forall c outerT innerT. (MonadTransUnlift innerT, TransConstraint c innerT)+ forall c outerT innerT. TransConstraint c innerT => Unlift c outerT -> Unlift c innerT -> Unlift c (ComposeT outerT innerT) composeTUnlift ua ub (MkComposeT tatbma) = ub $ withTransConstraintTM @c $ ua tatbma composeTWUnlift ::- forall c outerT innerT. (MonadTransUnlift innerT, TransConstraint c innerT)+ forall c outerT innerT. TransConstraint c innerT => WUnlift c outerT -> WUnlift c innerT -> WUnlift c (ComposeT outerT innerT)@@ -103,7 +103,7 @@ case hasTransConstraint @Monad @outerT @(innerT m) of Dict -> Dict -instance (TransConstraint MonadIO outerT, TransConstraint Monad innerT, TransConstraint MonadIO innerT) =>+instance (TransConstraint MonadIO outerT, TransConstraint MonadIO innerT) => TransConstraint MonadIO (ComposeT outerT innerT) where hasTransConstraint :: forall m. MonadIO m@@ -114,7 +114,7 @@ case hasTransConstraint @MonadIO @outerT @(innerT m) of Dict -> Dict -instance (TransConstraint MonadFail outerT, TransConstraint Monad innerT, TransConstraint MonadFail innerT) =>+instance (TransConstraint MonadFail outerT, TransConstraint MonadFail innerT) => TransConstraint MonadFail (ComposeT outerT innerT) where hasTransConstraint :: forall m. MonadFail m@@ -125,7 +125,7 @@ case hasTransConstraint @MonadFail @outerT @(innerT m) of Dict -> Dict -instance (TransConstraint MonadFix outerT, TransConstraint Monad innerT, TransConstraint MonadFix innerT) =>+instance (TransConstraint MonadFix outerT, TransConstraint MonadFix innerT) => TransConstraint MonadFix (ComposeT outerT innerT) where hasTransConstraint :: forall m. MonadFix m@@ -136,7 +136,7 @@ case hasTransConstraint @MonadFix @outerT @(innerT m) of Dict -> Dict -instance (TransConstraint MonadPlus outerT, TransConstraint Monad innerT, TransConstraint MonadPlus innerT) =>+instance (TransConstraint MonadPlus outerT, TransConstraint MonadPlus innerT) => TransConstraint MonadPlus (ComposeT outerT innerT) where hasTransConstraint :: forall m. MonadPlus m
src/Control/Monad/Ology/Specific/ContT.hs view
@@ -9,7 +9,7 @@ import Control.Monad.Ology.Specific.ReaderT import Control.Monad.Ology.Specific.StateT import Control.Monad.Trans.Cont hiding (callCC)-import qualified Control.Monad.Trans.Cont as T+import Control.Monad.Trans.Cont qualified as T import Import instance TransConstraint Functor (ContT s) where
src/Control/Monad/Ology/Specific/ExceptT.hs view
@@ -70,7 +70,7 @@ SuccessResult (Right a) -> return $ return a transExcept ::- forall t m e a. (MonadTransTunnel t, Applicative (Tunnel t), Monad m)+ forall t m e a. (MonadTransTunnel t, Monad m) => t (ExceptT e m) a -> t m (Either e a) transExcept tema = tunnel $ \unlift -> fmap commuteInner $ runExceptT $ unlift tema
src/Control/Monad/Ology/Specific/LifecycleT.hs view
@@ -74,7 +74,7 @@ mempty = MkLifeState Nothing -- | This is for managing the automatic closing of opened resources.-newtype LifecycleT m a = MkLifecycleT+newtype LifecycleT (m :: Type -> Type) (a :: Type) = MkLifecycleT { unLifecycleT :: MVar LifeState -> m a }
src/Control/Monad/Ology/Specific/Result.hs view
@@ -29,7 +29,7 @@ maybeToM :: MonadFail m => String -> Maybe a -> m a maybeToM e = resultToM . resultFromMaybe e -deriving instance (Eq e, Eq a) => Eq (Result e a)+deriving stock instance (Eq e, Eq a) => Eq (Result e a) instance Functor (Result e) where fmap ab (SuccessResult a) = SuccessResult (ab a)
src/Control/Monad/Ology/Specific/StackT.hs view
@@ -76,8 +76,7 @@ instance (IsStack (TransConstraint Monad) tt, IsStack MonadTrans tt, MonadFail m) => MonadFail (StackT tt m) where fail s = lift $ fail s -instance (IsStack (TransConstraint Monad) tt, IsStack (TransConstraint MonadFail) tt, IsStack MonadTrans tt) =>- TransConstraint MonadFail (StackT tt) where+instance (IsStack (TransConstraint Monad) tt, IsStack MonadTrans tt) => TransConstraint MonadFail (StackT tt) where hasTransConstraint = Dict instance (IsStack (TransConstraint Monad) tt, IsStack (TransConstraint MonadFix) tt, MonadFix m) =>@@ -254,7 +253,6 @@ instance ( IsStack (WithTunnelConstraint Functor) tt , IsStack (WithTunnelConstraint MonadInner) tt , IsStack (WithTunnelConstraint MonadExtract) tt- , IsStack MonadTransUnlift tt ) => MonadExtract (StackTunnel tt) where mToValue = case isWithTunnelConstraint @MonadExtract @tt of
src/Control/Monad/Ology/Specific/StepT.hs view
@@ -5,6 +5,7 @@ import Control.Monad.Ology.General.Trans.Constraint import Control.Monad.Ology.General.Trans.Hoist import Control.Monad.Ology.General.Trans.Trans+import Control.Monad.Ology.General.Trans.Tunnel import Import -- | A monad that can be run step-by-step until the result.@@ -48,6 +49,16 @@ instance Functor f => MonadTransHoist (StepT f) where hoist f (MkStepT ma) = MkStepT $ (fmap $ fmap $ fmap $ hoist f) $ f ma++underTunnelStepT ::+ forall t m turn r. (MonadTransTunnel t, Monad m, Functor turn)+ => ((forall m1 a. Monad m1 => t m1 a -> m1 (Tunnel t a)) -> StepT turn m (Tunnel t r))+ -> StepT turn (t m) r+underTunnelStepT call = let+ conv :: Either (Tunnel t r) (turn (StepT turn m (Tunnel t r))) -> Tunnel t (Either r (turn (StepT turn (t m) r)))+ conv (Left tr) = fmap Left tr+ conv (Right turn) = return $ Right $ fmap (\step -> underTunnelStepT $ \_ -> step) turn+ in MkStepT $ tunnel $ \tun -> fmap conv $ unStepT $ call tun -- | Run all the steps until done. runSteps :: Monad m => Extract f -> StepT f m --> m
src/Control/Monad/Ology/Specific/WriterT.hs view
@@ -15,7 +15,7 @@ evalWriterT :: Monad m => WriterT w m a -> m a evalWriterT wma = fmap fst $ runWriterT wma -instance Monoid w => TransConstraint Functor (WriterT w) where+instance TransConstraint Functor (WriterT w) where hasTransConstraint = Dict instance Monoid w => TransConstraint Applicative (WriterT w) where
test/Exception.hs view
@@ -64,7 +64,7 @@ newtype TestExc = MkTestExc Int- deriving (Eq, Show)+ deriving newtype (Eq, Show) instance Exception TestExc