packages feed

deepcontrol 0.4.2.1 → 0.4.3.0

raw patch · 10 files changed

+270/−388 lines, 10 filesPVP: major bump suggested

API removals or changes: PVP suggests a major version bump

API changes (from Hackage documentation)

- DeepControl.Applicative: infixl 3 *----|
- DeepControl.Applicative: infixl 4 |$>>>>>
- DeepControl.Applicative: infixl 5 ****->
- DeepControl.Applicative: infixl 6 ***-*
- DeepControl.Arrow: instance (GHC.Base.Applicative m1, GHC.Base.Monad m1, DeepControl.Monad.Monad2 m2) => Control.Arrow.Arrow (DeepControl.Arrow.Kleisli2 m1 m2)
- DeepControl.Arrow: instance (GHC.Base.Applicative m1, GHC.Base.Monad m1, DeepControl.Monad.Monad2 m2) => Control.Category.Category (DeepControl.Arrow.Kleisli2 m1 m2)
- DeepControl.Arrow: instance (GHC.Base.Applicative m1, GHC.Base.Monad m1, DeepControl.Monad.Monad2 m2, DeepControl.Monad.Monad3 m3) => Control.Arrow.Arrow (DeepControl.Arrow.Kleisli3 m1 m2 m3)
- DeepControl.Arrow: instance (GHC.Base.Applicative m1, GHC.Base.Monad m1, DeepControl.Monad.Monad2 m2, DeepControl.Monad.Monad3 m3) => Control.Category.Category (DeepControl.Arrow.Kleisli3 m1 m2 m3)
- DeepControl.Arrow: instance (GHC.Base.Applicative m1, GHC.Base.Monad m1, DeepControl.Monad.Monad2 m2, DeepControl.Monad.Monad3 m3, DeepControl.Monad.Monad4 m4) => Control.Arrow.Arrow (DeepControl.Arrow.Kleisli4 m1 m2 m3 m4)
- DeepControl.Arrow: instance (GHC.Base.Applicative m1, GHC.Base.Monad m1, DeepControl.Monad.Monad2 m2, DeepControl.Monad.Monad3 m3, DeepControl.Monad.Monad4 m4) => Control.Category.Category (DeepControl.Arrow.Kleisli4 m1 m2 m3 m4)
- DeepControl.Arrow: instance (GHC.Base.Applicative m1, GHC.Base.Monad m1, DeepControl.Monad.Monad2 m2, DeepControl.Monad.Monad3 m3, DeepControl.Monad.Monad4 m4, DeepControl.Monad.Monad5 m5) => Control.Arrow.Arrow (DeepControl.Arrow.Kleisli5 m1 m2 m3 m4 m5)
- DeepControl.Arrow: instance (GHC.Base.Applicative m1, GHC.Base.Monad m1, DeepControl.Monad.Monad2 m2, DeepControl.Monad.Monad3 m3, DeepControl.Monad.Monad4 m4, DeepControl.Monad.Monad5 m5) => Control.Category.Category (DeepControl.Arrow.Kleisli5 m1 m2 m3 m4 m5)
- DeepControl.Monad: class (Monad m2) => Monad2 m2
- DeepControl.Monad: class (Monad2 m3) => Monad3 m3
- DeepControl.Monad: class (Monad3 m4) => Monad4 m4
- DeepControl.Monad: class (Monad4 m5) => Monad5 m5
- DeepControl.Monad: infixl 1 >-
- DeepControl.Monad: infixr 1 >=====>
- DeepControl.Monad: instance DeepControl.Monad.Monad2 (Control.Monad.Trans.Except.Except e)
- DeepControl.Monad: instance DeepControl.Monad.Monad2 (Data.Either.Either e)
- DeepControl.Monad: instance DeepControl.Monad.Monad2 GHC.Base.Maybe
- DeepControl.Monad: instance DeepControl.Monad.Monad2 []
- DeepControl.Monad: instance DeepControl.Monad.Monad3 (Control.Monad.Trans.Except.Except e)
- DeepControl.Monad: instance DeepControl.Monad.Monad3 (Data.Either.Either e)
- DeepControl.Monad: instance DeepControl.Monad.Monad3 GHC.Base.Maybe
- DeepControl.Monad: instance DeepControl.Monad.Monad3 []
- DeepControl.Monad: instance DeepControl.Monad.Monad4 (Control.Monad.Trans.Except.Except e)
- DeepControl.Monad: instance DeepControl.Monad.Monad4 (Data.Either.Either e)
- DeepControl.Monad: instance DeepControl.Monad.Monad4 GHC.Base.Maybe
- DeepControl.Monad: instance DeepControl.Monad.Monad4 []
- DeepControl.Monad: instance DeepControl.Monad.Monad5 (Control.Monad.Trans.Except.Except e)
- DeepControl.Monad: instance DeepControl.Monad.Monad5 (Data.Either.Either e)
- DeepControl.Monad: instance DeepControl.Monad.Monad5 GHC.Base.Maybe
- DeepControl.Monad: instance DeepControl.Monad.Monad5 []
- DeepControl.Monad: instance GHC.Base.Monoid w => DeepControl.Monad.Monad2 (Control.Monad.Trans.Writer.Lazy.Writer w)
- DeepControl.Monad: instance GHC.Base.Monoid w => DeepControl.Monad.Monad3 (Control.Monad.Trans.Writer.Lazy.Writer w)
- DeepControl.Monad: instance GHC.Base.Monoid w => DeepControl.Monad.Monad4 (Control.Monad.Trans.Writer.Lazy.Writer w)
- DeepControl.Monad: instance GHC.Base.Monoid w => DeepControl.Monad.Monad5 (Control.Monad.Trans.Writer.Lazy.Writer w)
- DeepControl.Monad.Morph: infixl 2 |>>>>>|
- DeepControl.Monad.Morph: infixr 2 |<<<<<|
- DeepControl.Monad.Trans: -> (* -> *) -> (* -> *) -> (* -> *) -> * -> *;
- DeepControl.Monad.Trans: infixl 3 |****-|
- DeepControl.Monad.Trans: type family Trans5Down t5 :: (* -> *)
- DeepControl.Monad.Trans: }
- DeepControl.Monad.Trans.Identity: instance (Control.Monad.IO.Class.MonadIO m1, GHC.Base.Monad m1, DeepControl.Monad.Monad2 m2) => Control.Monad.IO.Class.MonadIO (DeepControl.Monad.Trans.Identity.IdentityT2 m1 m2)
- DeepControl.Monad.Trans.Identity: instance (Control.Monad.IO.Class.MonadIO m1, GHC.Base.Monad m1, DeepControl.Monad.Monad2 m2, DeepControl.Monad.Monad3 m3) => Control.Monad.IO.Class.MonadIO (DeepControl.Monad.Trans.Identity.IdentityT3 m1 m2 m3)
- DeepControl.Monad.Trans.Identity: instance (Control.Monad.IO.Class.MonadIO m1, GHC.Base.Monad m1, DeepControl.Monad.Monad2 m2, DeepControl.Monad.Monad3 m3, DeepControl.Monad.Monad4 m4) => Control.Monad.IO.Class.MonadIO (DeepControl.Monad.Trans.Identity.IdentityT4 m1 m2 m3 m4)
- DeepControl.Monad.Trans.Identity: instance (Control.Monad.IO.Class.MonadIO m1, GHC.Base.Monad m1, DeepControl.Monad.Monad2 m2, DeepControl.Monad.Monad3 m3, DeepControl.Monad.Monad4 m4, DeepControl.Monad.Monad5 m5) => Control.Monad.IO.Class.MonadIO (DeepControl.Monad.Trans.Identity.IdentityT5 m1 m2 m3 m4 m5)
- DeepControl.Monad.Trans.Identity: instance (Data.Foldable.Foldable f2, Data.Foldable.Foldable f1) => Data.Foldable.Foldable (DeepControl.Monad.Trans.Identity.IdentityT2 f1 f2)
- DeepControl.Monad.Trans.Identity: instance (Data.Foldable.Foldable f3, Data.Foldable.Foldable f2, Data.Foldable.Foldable f1) => Data.Foldable.Foldable (DeepControl.Monad.Trans.Identity.IdentityT3 f1 f2 f3)
- DeepControl.Monad.Trans.Identity: instance (Data.Foldable.Foldable f4, Data.Foldable.Foldable f3, Data.Foldable.Foldable f2, Data.Foldable.Foldable f1) => Data.Foldable.Foldable (DeepControl.Monad.Trans.Identity.IdentityT4 f1 f2 f3 f4)
- DeepControl.Monad.Trans.Identity: instance (Data.Foldable.Foldable f5, Data.Foldable.Foldable f4, Data.Foldable.Foldable f3, Data.Foldable.Foldable f2, Data.Foldable.Foldable f1) => Data.Foldable.Foldable (DeepControl.Monad.Trans.Identity.IdentityT5 f1 f2 f3 f4 f5)
- DeepControl.Monad.Trans.Identity: instance (Data.Traversable.Traversable f2, Data.Traversable.Traversable f1) => Data.Traversable.Traversable (DeepControl.Monad.Trans.Identity.IdentityT2 f1 f2)
- DeepControl.Monad.Trans.Identity: instance (Data.Traversable.Traversable f3, Data.Traversable.Traversable f2, Data.Traversable.Traversable f1) => Data.Traversable.Traversable (DeepControl.Monad.Trans.Identity.IdentityT3 f1 f2 f3)
- DeepControl.Monad.Trans.Identity: instance (Data.Traversable.Traversable f4, Data.Traversable.Traversable f3, Data.Traversable.Traversable f2, Data.Traversable.Traversable f1) => Data.Traversable.Traversable (DeepControl.Monad.Trans.Identity.IdentityT4 f1 f2 f3 f4)
- DeepControl.Monad.Trans.Identity: instance (Data.Traversable.Traversable f5, Data.Traversable.Traversable f4, Data.Traversable.Traversable f3, Data.Traversable.Traversable f2, Data.Traversable.Traversable f1) => Data.Traversable.Traversable (DeepControl.Monad.Trans.Identity.IdentityT5 f1 f2 f3 f4 f5)
- DeepControl.Monad.Trans.Identity: instance (GHC.Base.Functor f2, GHC.Base.Functor f1) => GHC.Base.Functor (DeepControl.Monad.Trans.Identity.IdentityT2 f1 f2)
- DeepControl.Monad.Trans.Identity: instance (GHC.Base.Functor f3, GHC.Base.Functor f2, GHC.Base.Functor f1) => GHC.Base.Functor (DeepControl.Monad.Trans.Identity.IdentityT3 f1 f2 f3)
- DeepControl.Monad.Trans.Identity: instance (GHC.Base.Functor f4, GHC.Base.Functor f3, GHC.Base.Functor f2, GHC.Base.Functor f1) => GHC.Base.Functor (DeepControl.Monad.Trans.Identity.IdentityT4 f1 f2 f3 f4)
- DeepControl.Monad.Trans.Identity: instance (GHC.Base.Functor f5, GHC.Base.Functor f4, GHC.Base.Functor f3, GHC.Base.Functor f2, GHC.Base.Functor f1) => GHC.Base.Functor (DeepControl.Monad.Trans.Identity.IdentityT5 f1 f2 f3 f4 f5)
- DeepControl.Monad.Trans.Identity: instance (GHC.Base.Monad m1, DeepControl.Monad.Monad2 m2) => GHC.Base.Monad (DeepControl.Monad.Trans.Identity.IdentityT2 m1 m2)
- DeepControl.Monad.Trans.Identity: instance (GHC.Base.Monad m1, DeepControl.Monad.Monad2 m2, DeepControl.Monad.Monad3 m3) => GHC.Base.Monad (DeepControl.Monad.Trans.Identity.IdentityT3 m1 m2 m3)
- DeepControl.Monad.Trans.Identity: instance (GHC.Base.Monad m1, DeepControl.Monad.Monad2 m2, DeepControl.Monad.Monad3 m3, DeepControl.Monad.Monad4 m4) => GHC.Base.Monad (DeepControl.Monad.Trans.Identity.IdentityT4 m1 m2 m3 m4)
- DeepControl.Monad.Trans.Identity: instance (GHC.Base.Monad m1, DeepControl.Monad.Monad2 m2, DeepControl.Monad.Monad3 m3, DeepControl.Monad.Monad4 m4, DeepControl.Monad.Monad5 m5) => GHC.Base.Monad (DeepControl.Monad.Trans.Identity.IdentityT5 m1 m2 m3 m4 m5)
- DeepControl.Monad.Trans.Identity: instance (GHC.Base.MonadPlus m1, GHC.Base.Alternative m2, DeepControl.Monad.Monad2 m2) => GHC.Base.MonadPlus (DeepControl.Monad.Trans.Identity.IdentityT2 m1 m2)
- DeepControl.Monad.Trans.Identity: instance (GHC.Base.MonadPlus m1, GHC.Base.Alternative m2, DeepControl.Monad.Monad2 m2, GHC.Base.Alternative m3, DeepControl.Monad.Monad3 m3) => GHC.Base.MonadPlus (DeepControl.Monad.Trans.Identity.IdentityT3 m1 m2 m3)
- DeepControl.Monad.Trans.Identity: instance (GHC.Base.MonadPlus m1, GHC.Base.Alternative m2, DeepControl.Monad.Monad2 m2, GHC.Base.Alternative m3, DeepControl.Monad.Monad3 m3, GHC.Base.Alternative m4, DeepControl.Monad.Monad4 m4) => GHC.Base.MonadPlus (DeepControl.Monad.Trans.Identity.IdentityT4 m1 m2 m3 m4)
- DeepControl.Monad.Trans.Identity: instance (GHC.Base.MonadPlus m1, GHC.Base.Alternative m2, DeepControl.Monad.Monad2 m2, GHC.Base.Alternative m3, DeepControl.Monad.Monad3 m3, GHC.Base.Alternative m4, DeepControl.Monad.Monad4 m4, GHC.Base.Alternative m5, DeepControl.Monad.Monad5 m5) => GHC.Base.MonadPlus (DeepControl.Monad.Trans.Identity.IdentityT5 m1 m2 m3 m4 m5)
+ DeepControl.Arrow: instance (GHC.Base.Monad m1, GHC.Base.Monad m2, DeepControl.Commutative.Commutative m2) => Control.Arrow.Arrow (DeepControl.Arrow.Kleisli2 m1 m2)
+ DeepControl.Arrow: instance (GHC.Base.Monad m1, GHC.Base.Monad m2, DeepControl.Commutative.Commutative m2) => Control.Category.Category (DeepControl.Arrow.Kleisli2 m1 m2)
+ DeepControl.Arrow: instance (GHC.Base.Monad m1, GHC.Base.Monad m2, DeepControl.Commutative.Commutative m2, GHC.Base.Monad m3, DeepControl.Commutative.Commutative m3) => Control.Arrow.Arrow (DeepControl.Arrow.Kleisli3 m1 m2 m3)
+ DeepControl.Arrow: instance (GHC.Base.Monad m1, GHC.Base.Monad m2, DeepControl.Commutative.Commutative m2, GHC.Base.Monad m3, DeepControl.Commutative.Commutative m3) => Control.Category.Category (DeepControl.Arrow.Kleisli3 m1 m2 m3)
+ DeepControl.Arrow: instance (GHC.Base.Monad m1, GHC.Base.Monad m2, DeepControl.Commutative.Commutative m2, GHC.Base.Monad m3, DeepControl.Commutative.Commutative m3, GHC.Base.Monad m4, DeepControl.Commutative.Commutative m4) => Control.Arrow.Arrow (DeepControl.Arrow.Kleisli4 m1 m2 m3 m4)
+ DeepControl.Arrow: instance (GHC.Base.Monad m1, GHC.Base.Monad m2, DeepControl.Commutative.Commutative m2, GHC.Base.Monad m3, DeepControl.Commutative.Commutative m3, GHC.Base.Monad m4, DeepControl.Commutative.Commutative m4) => Control.Category.Category (DeepControl.Arrow.Kleisli4 m1 m2 m3 m4)
+ DeepControl.Arrow: instance (GHC.Base.Monad m1, GHC.Base.Monad m2, DeepControl.Commutative.Commutative m2, GHC.Base.Monad m3, DeepControl.Commutative.Commutative m3, GHC.Base.Monad m4, DeepControl.Commutative.Commutative m4, GHC.Base.Monad m5, DeepControl.Commutative.Commutative m5) => Control.Arrow.Arrow (DeepControl.Arrow.Kleisli5 m1 m2 m3 m4 m5)
+ DeepControl.Arrow: instance (GHC.Base.Monad m1, GHC.Base.Monad m2, DeepControl.Commutative.Commutative m2, GHC.Base.Monad m3, DeepControl.Commutative.Commutative m3, GHC.Base.Monad m4, DeepControl.Commutative.Commutative m4, GHC.Base.Monad m5, DeepControl.Commutative.Commutative m5) => Control.Category.Category (DeepControl.Arrow.Kleisli5 m1 m2 m3 m4 m5)
+ DeepControl.Commutative: instance DeepControl.Commutative.Commutative (Control.Applicative.Const m)
+ DeepControl.Monad.Trans.Identity: instance (Control.Monad.IO.Class.MonadIO m1, GHC.Base.Monad m1, GHC.Base.Monad m2, DeepControl.Commutative.Commutative m2) => Control.Monad.IO.Class.MonadIO (DeepControl.Monad.Trans.Identity.IdentityT2 m1 m2)
+ DeepControl.Monad.Trans.Identity: instance (Control.Monad.IO.Class.MonadIO m1, GHC.Base.Monad m1, GHC.Base.Monad m2, DeepControl.Commutative.Commutative m2, GHC.Base.Monad m3, DeepControl.Commutative.Commutative m3) => Control.Monad.IO.Class.MonadIO (DeepControl.Monad.Trans.Identity.IdentityT3 m1 m2 m3)
+ DeepControl.Monad.Trans.Identity: instance (Control.Monad.IO.Class.MonadIO m1, GHC.Base.Monad m1, GHC.Base.Monad m2, DeepControl.Commutative.Commutative m2, GHC.Base.Monad m3, DeepControl.Commutative.Commutative m3, GHC.Base.Monad m4, DeepControl.Commutative.Commutative m4) => Control.Monad.IO.Class.MonadIO (DeepControl.Monad.Trans.Identity.IdentityT4 m1 m2 m3 m4)
+ DeepControl.Monad.Trans.Identity: instance (Control.Monad.IO.Class.MonadIO m1, GHC.Base.Monad m1, GHC.Base.Monad m2, DeepControl.Commutative.Commutative m2, GHC.Base.Monad m3, DeepControl.Commutative.Commutative m3, GHC.Base.Monad m4, DeepControl.Commutative.Commutative m4, GHC.Base.Monad m5, DeepControl.Commutative.Commutative m5) => Control.Monad.IO.Class.MonadIO (DeepControl.Monad.Trans.Identity.IdentityT5 m1 m2 m3 m4 m5)
+ DeepControl.Monad.Trans.Identity: instance (Data.Foldable.Foldable f1, Data.Foldable.Foldable f2) => Data.Foldable.Foldable (DeepControl.Monad.Trans.Identity.IdentityT2 f1 f2)
+ DeepControl.Monad.Trans.Identity: instance (Data.Foldable.Foldable f1, Data.Foldable.Foldable f2, Data.Foldable.Foldable f3) => Data.Foldable.Foldable (DeepControl.Monad.Trans.Identity.IdentityT3 f1 f2 f3)
+ DeepControl.Monad.Trans.Identity: instance (Data.Foldable.Foldable f1, Data.Foldable.Foldable f2, Data.Foldable.Foldable f3, Data.Foldable.Foldable f4) => Data.Foldable.Foldable (DeepControl.Monad.Trans.Identity.IdentityT4 f1 f2 f3 f4)
+ DeepControl.Monad.Trans.Identity: instance (Data.Foldable.Foldable f1, Data.Foldable.Foldable f2, Data.Foldable.Foldable f3, Data.Foldable.Foldable f4, Data.Foldable.Foldable f5) => Data.Foldable.Foldable (DeepControl.Monad.Trans.Identity.IdentityT5 f1 f2 f3 f4 f5)
+ DeepControl.Monad.Trans.Identity: instance (Data.Traversable.Traversable f1, Data.Traversable.Traversable f2) => Data.Traversable.Traversable (DeepControl.Monad.Trans.Identity.IdentityT2 f1 f2)
+ DeepControl.Monad.Trans.Identity: instance (Data.Traversable.Traversable f1, Data.Traversable.Traversable f2, Data.Traversable.Traversable f3) => Data.Traversable.Traversable (DeepControl.Monad.Trans.Identity.IdentityT3 f1 f2 f3)
+ DeepControl.Monad.Trans.Identity: instance (Data.Traversable.Traversable f1, Data.Traversable.Traversable f2, Data.Traversable.Traversable f3, Data.Traversable.Traversable f4) => Data.Traversable.Traversable (DeepControl.Monad.Trans.Identity.IdentityT4 f1 f2 f3 f4)
+ DeepControl.Monad.Trans.Identity: instance (Data.Traversable.Traversable f1, Data.Traversable.Traversable f2, Data.Traversable.Traversable f3, Data.Traversable.Traversable f4, Data.Traversable.Traversable f5) => Data.Traversable.Traversable (DeepControl.Monad.Trans.Identity.IdentityT5 f1 f2 f3 f4 f5)
+ DeepControl.Monad.Trans.Identity: instance (GHC.Base.Functor f1, GHC.Base.Functor f2) => GHC.Base.Functor (DeepControl.Monad.Trans.Identity.IdentityT2 f1 f2)
+ DeepControl.Monad.Trans.Identity: instance (GHC.Base.Functor f1, GHC.Base.Functor f2, GHC.Base.Functor f3) => GHC.Base.Functor (DeepControl.Monad.Trans.Identity.IdentityT3 f1 f2 f3)
+ DeepControl.Monad.Trans.Identity: instance (GHC.Base.Functor f1, GHC.Base.Functor f2, GHC.Base.Functor f3, GHC.Base.Functor f4) => GHC.Base.Functor (DeepControl.Monad.Trans.Identity.IdentityT4 f1 f2 f3 f4)
+ DeepControl.Monad.Trans.Identity: instance (GHC.Base.Functor f1, GHC.Base.Functor f2, GHC.Base.Functor f3, GHC.Base.Functor f4, GHC.Base.Functor f5) => GHC.Base.Functor (DeepControl.Monad.Trans.Identity.IdentityT5 f1 f2 f3 f4 f5)
+ DeepControl.Monad.Trans.Identity: instance (GHC.Base.Monad m1, GHC.Base.Monad m2, DeepControl.Commutative.Commutative m2) => GHC.Base.Monad (DeepControl.Monad.Trans.Identity.IdentityT2 m1 m2)
+ DeepControl.Monad.Trans.Identity: instance (GHC.Base.Monad m1, GHC.Base.Monad m2, DeepControl.Commutative.Commutative m2, GHC.Base.Monad m3, DeepControl.Commutative.Commutative m3) => GHC.Base.Monad (DeepControl.Monad.Trans.Identity.IdentityT3 m1 m2 m3)
+ DeepControl.Monad.Trans.Identity: instance (GHC.Base.Monad m1, GHC.Base.Monad m2, DeepControl.Commutative.Commutative m2, GHC.Base.Monad m3, DeepControl.Commutative.Commutative m3, GHC.Base.Monad m4, DeepControl.Commutative.Commutative m4) => GHC.Base.Monad (DeepControl.Monad.Trans.Identity.IdentityT4 m1 m2 m3 m4)
+ DeepControl.Monad.Trans.Identity: instance (GHC.Base.Monad m1, GHC.Base.Monad m2, DeepControl.Commutative.Commutative m2, GHC.Base.Monad m3, DeepControl.Commutative.Commutative m3, GHC.Base.Monad m4, DeepControl.Commutative.Commutative m4, GHC.Base.Monad m5, DeepControl.Commutative.Commutative m5) => GHC.Base.Monad (DeepControl.Monad.Trans.Identity.IdentityT5 m1 m2 m3 m4 m5)
+ DeepControl.Monad.Trans.Identity: instance (GHC.Base.MonadPlus m1, GHC.Base.Alternative m2, GHC.Base.Monad m2, DeepControl.Commutative.Commutative m2) => GHC.Base.MonadPlus (DeepControl.Monad.Trans.Identity.IdentityT2 m1 m2)
+ DeepControl.Monad.Trans.Identity: instance (GHC.Base.MonadPlus m1, GHC.Base.Alternative m2, GHC.Base.Monad m2, DeepControl.Commutative.Commutative m2, GHC.Base.Alternative m3, GHC.Base.Monad m3, DeepControl.Commutative.Commutative m3) => GHC.Base.MonadPlus (DeepControl.Monad.Trans.Identity.IdentityT3 m1 m2 m3)
+ DeepControl.Monad.Trans.Identity: instance (GHC.Base.MonadPlus m1, GHC.Base.Alternative m2, GHC.Base.Monad m2, DeepControl.Commutative.Commutative m2, GHC.Base.Alternative m3, GHC.Base.Monad m3, DeepControl.Commutative.Commutative m3, GHC.Base.Alternative m4, GHC.Base.Monad m4, DeepControl.Commutative.Commutative m4) => GHC.Base.MonadPlus (DeepControl.Monad.Trans.Identity.IdentityT4 m1 m2 m3 m4)
+ DeepControl.Monad.Trans.Identity: instance (GHC.Base.MonadPlus m1, GHC.Base.Alternative m2, GHC.Base.Monad m2, DeepControl.Commutative.Commutative m2, GHC.Base.Alternative m3, GHC.Base.Monad m3, DeepControl.Commutative.Commutative m3, GHC.Base.Alternative m4, GHC.Base.Monad m4, DeepControl.Commutative.Commutative m4, GHC.Base.Alternative m5, GHC.Base.Monad m5, DeepControl.Commutative.Commutative m5) => GHC.Base.MonadPlus (DeepControl.Monad.Trans.Identity.IdentityT5 m1 m2 m3 m4 m5)
- DeepControl.Commutative: class (Applicative c) => Commutative c
+ DeepControl.Commutative: class (Functor c) => Commutative c
- DeepControl.Commutative: sink2 :: (Commutative m1, Commutative m2, Applicative m3) => m1 (m2 (m3 a)) -> m2 (m3 (m1 a))
+ DeepControl.Commutative: sink2 :: (Commutative m1, Applicative m2, Applicative m3) => m1 (m2 (m3 a)) -> m2 (m3 (m1 a))
- DeepControl.Commutative: sink3 :: (Commutative m1, Commutative m2, Commutative m3, Applicative m4) => m1 (m2 (m3 (m4 a))) -> m2 (m3 (m4 (m1 a)))
+ DeepControl.Commutative: sink3 :: (Commutative m1, Applicative m2, Applicative m3, Applicative m4) => m1 (m2 (m3 (m4 a))) -> m2 (m3 (m4 (m1 a)))
- DeepControl.Commutative: sink4 :: (Commutative m1, Commutative m2, Commutative m3, Commutative m4, Applicative m5) => m1 (m2 (m3 (m4 (m5 a)))) -> m2 (m3 (m4 (m5 (m1 a))))
+ DeepControl.Commutative: sink4 :: (Commutative m1, Applicative m2, Applicative m3, Applicative m4, Applicative m5) => m1 (m2 (m3 (m4 (m5 a)))) -> m2 (m3 (m4 (m5 (m1 a))))
- DeepControl.Commutative: sink5 :: (Commutative m1, Commutative m2, Commutative m3, Commutative m4, Commutative m5, Applicative m6) => m1 (m2 (m3 (m4 (m5 (m6 a))))) -> m2 (m3 (m4 (m5 (m6 (m1 a)))))
+ DeepControl.Commutative: sink5 :: (Commutative m1, Applicative m2, Applicative m3, Applicative m4, Applicative m5, Applicative m6) => m1 (m2 (m3 (m4 (m5 (m6 a))))) -> m2 (m3 (m4 (m5 (m6 (m1 a)))))
- DeepControl.Monad: (---->==) :: (Monad m1, Monad2 m2, Monad3 m3, Monad4 m4, Monad5 m5) => m5 a -> (a -> m1 (m2 (m3 (m4 (m5 b))))) -> m1 (m2 (m3 (m4 (m5 b))))
+ DeepControl.Monad: (---->==) :: (Monad m1, Monad m2, Commutative m2, Monad m3, Commutative m3, Monad m4, Commutative m4, Monad m5, Commutative m5) => m5 a -> (a -> m1 (m2 (m3 (m4 (m5 b))))) -> m1 (m2 (m3 (m4 (m5 b))))
- DeepControl.Monad: (---->~) :: (Monad m1, Monad2 m2, Monad3 m3, Monad4 m4, Monad5 m5) => m5 a -> m1 (m2 (m3 (m4 (m5 b)))) -> m1 (m2 (m3 (m4 (m5 b))))
+ DeepControl.Monad: (---->~) :: (Monad m1, Monad m2, Commutative m2, Monad m3, Commutative m3, Monad m4, Commutative m4, Monad m5, Commutative m5) => m5 a -> m1 (m2 (m3 (m4 (m5 b)))) -> m1 (m2 (m3 (m4 (m5 b))))
- DeepControl.Monad: (--->-==) :: (Monad m1, Monad2 m2, Monad3 m3, Monad4 m4, Monad5 m5) => m4 a -> (a -> m1 (m2 (m3 (m4 (m5 b))))) -> m1 (m2 (m3 (m4 (m5 b))))
+ DeepControl.Monad: (--->-==) :: (Monad m1, Monad m2, Commutative m2, Monad m3, Commutative m3, Monad m4, Commutative m4, Monad m5, Commutative m5) => m4 a -> (a -> m1 (m2 (m3 (m4 (m5 b))))) -> m1 (m2 (m3 (m4 (m5 b))))
- DeepControl.Monad: (--->-~) :: (Monad m1, Monad2 m2, Monad3 m3, Monad4 m4, Monad5 m5) => m4 a -> m1 (m2 (m3 (m4 (m5 b)))) -> m1 (m2 (m3 (m4 (m5 b))))
+ DeepControl.Monad: (--->-~) :: (Monad m1, Monad m2, Commutative m2, Monad m3, Commutative m3, Monad m4, Commutative m4, Monad m5, Commutative m5) => m4 a -> m1 (m2 (m3 (m4 (m5 b)))) -> m1 (m2 (m3 (m4 (m5 b))))
- DeepControl.Monad: (--->==) :: (Monad m1, Monad2 m2, Monad3 m3, Monad4 m4) => m4 a -> (a -> m1 (m2 (m3 (m4 b)))) -> m1 (m2 (m3 (m4 b)))
+ DeepControl.Monad: (--->==) :: (Monad m1, Monad m2, Commutative m2, Monad m3, Commutative m3, Monad m4, Commutative m4) => m4 a -> (a -> m1 (m2 (m3 (m4 b)))) -> m1 (m2 (m3 (m4 b)))
- DeepControl.Monad: (--->>==) :: (Monad m1, Monad2 m2, Monad3 m3, Monad4 m4, Monad5 m5) => m4 (m5 a) -> (a -> m1 (m2 (m3 (m4 (m5 b))))) -> m1 (m2 (m3 (m4 (m5 b))))
+ DeepControl.Monad: (--->>==) :: (Monad m1, Monad m2, Commutative m2, Monad m3, Commutative m3, Monad m4, Commutative m4, Monad m5, Commutative m5) => m4 (m5 a) -> (a -> m1 (m2 (m3 (m4 (m5 b))))) -> m1 (m2 (m3 (m4 (m5 b))))
- DeepControl.Monad: (--->>~) :: (Monad m1, Monad2 m2, Monad3 m3, Monad4 m4, Monad5 m5) => m4 (m5 a) -> m1 (m2 (m3 (m4 (m5 b)))) -> m1 (m2 (m3 (m4 (m5 b))))
+ DeepControl.Monad: (--->>~) :: (Monad m1, Monad m2, Commutative m2, Monad m3, Commutative m3, Monad m4, Commutative m4, Monad m5, Commutative m5) => m4 (m5 a) -> m1 (m2 (m3 (m4 (m5 b)))) -> m1 (m2 (m3 (m4 (m5 b))))
- DeepControl.Monad: (--->~) :: (Monad m1, Monad2 m2, Monad3 m3, Monad4 m4) => m4 a -> m1 (m2 (m3 (m4 b))) -> m1 (m2 (m3 (m4 b)))
+ DeepControl.Monad: (--->~) :: (Monad m1, Monad m2, Commutative m2, Monad m3, Commutative m3, Monad m4, Commutative m4) => m4 a -> m1 (m2 (m3 (m4 b))) -> m1 (m2 (m3 (m4 b)))
- DeepControl.Monad: (-->--==) :: (Monad m1, Monad2 m2, Monad3 m3, Monad4 m4, Monad5 m5) => m3 a -> (a -> m1 (m2 (m3 (m4 (m5 b))))) -> m1 (m2 (m3 (m4 (m5 b))))
+ DeepControl.Monad: (-->--==) :: (Monad m1, Monad m2, Commutative m2, Monad m3, Commutative m3, Monad m4, Commutative m4, Monad m5, Commutative m5) => m3 a -> (a -> m1 (m2 (m3 (m4 (m5 b))))) -> m1 (m2 (m3 (m4 (m5 b))))
- DeepControl.Monad: (-->--~) :: (Monad m1, Monad2 m2, Monad3 m3, Monad4 m4, Monad5 m5) => m3 a -> m1 (m2 (m3 (m4 (m5 b)))) -> m1 (m2 (m3 (m4 (m5 b))))
+ DeepControl.Monad: (-->--~) :: (Monad m1, Monad m2, Commutative m2, Monad m3, Commutative m3, Monad m4, Commutative m4, Monad m5, Commutative m5) => m3 a -> m1 (m2 (m3 (m4 (m5 b)))) -> m1 (m2 (m3 (m4 (m5 b))))
- DeepControl.Monad: (-->-==) :: (Monad m1, Monad2 m2, Monad3 m3, Monad4 m4) => m3 a -> (a -> m1 (m2 (m3 (m4 b)))) -> m1 (m2 (m3 (m4 b)))
+ DeepControl.Monad: (-->-==) :: (Monad m1, Monad m2, Commutative m2, Monad m3, Commutative m3, Monad m4, Commutative m4) => m3 a -> (a -> m1 (m2 (m3 (m4 b)))) -> m1 (m2 (m3 (m4 b)))
- DeepControl.Monad: (-->->==) :: (Monad m1, Monad2 m2, Monad3 m3, Monad4 m4, Monad5 m5) => m3 (m5 a) -> (a -> m1 (m2 (m3 (m4 (m5 b))))) -> m1 (m2 (m3 (m4 (m5 b))))
+ DeepControl.Monad: (-->->==) :: (Monad m1, Monad m2, Commutative m2, Monad m3, Commutative m3, Monad m4, Commutative m4, Monad m5, Commutative m5) => m3 (m5 a) -> (a -> m1 (m2 (m3 (m4 (m5 b))))) -> m1 (m2 (m3 (m4 (m5 b))))
- DeepControl.Monad: (-->->~) :: (Monad m1, Monad2 m2, Monad3 m3, Monad4 m4, Monad5 m5) => m3 (m5 a) -> m1 (m2 (m3 (m4 (m5 b)))) -> m1 (m2 (m3 (m4 (m5 b))))
+ DeepControl.Monad: (-->->~) :: (Monad m1, Monad m2, Commutative m2, Monad m3, Commutative m3, Monad m4, Commutative m4, Monad m5, Commutative m5) => m3 (m5 a) -> m1 (m2 (m3 (m4 (m5 b)))) -> m1 (m2 (m3 (m4 (m5 b))))
- DeepControl.Monad: (-->-~) :: (Monad m1, Monad2 m2, Monad3 m3, Monad4 m4) => m3 a -> m1 (m2 (m3 (m4 b))) -> m1 (m2 (m3 (m4 b)))
+ DeepControl.Monad: (-->-~) :: (Monad m1, Monad m2, Commutative m2, Monad m3, Commutative m3, Monad m4, Commutative m4) => m3 a -> m1 (m2 (m3 (m4 b))) -> m1 (m2 (m3 (m4 b)))
- DeepControl.Monad: (-->==) :: (Monad m1, Monad2 m2, Monad3 m3) => m3 a -> (a -> m1 (m2 (m3 b))) -> m1 (m2 (m3 b))
+ DeepControl.Monad: (-->==) :: (Monad m1, Monad m2, Commutative m2, Monad m3, Commutative m3) => m3 a -> (a -> m1 (m2 (m3 b))) -> m1 (m2 (m3 b))
- DeepControl.Monad: (-->>-==) :: (Monad m1, Monad2 m2, Monad3 m3, Monad4 m4, Monad5 m5) => m3 (m4 a) -> (a -> m1 (m2 (m3 (m4 (m5 b))))) -> m1 (m2 (m3 (m4 (m5 b))))
+ DeepControl.Monad: (-->>-==) :: (Monad m1, Monad m2, Commutative m2, Monad m3, Commutative m3, Monad m4, Commutative m4, Monad m5, Commutative m5) => m3 (m4 a) -> (a -> m1 (m2 (m3 (m4 (m5 b))))) -> m1 (m2 (m3 (m4 (m5 b))))
- DeepControl.Monad: (-->>-~) :: (Monad m1, Monad2 m2, Monad3 m3, Monad4 m4, Monad5 m5) => m3 (m4 a) -> m1 (m2 (m3 (m4 (m5 b)))) -> m1 (m2 (m3 (m4 (m5 b))))
+ DeepControl.Monad: (-->>-~) :: (Monad m1, Monad m2, Commutative m2, Monad m3, Commutative m3, Monad m4, Commutative m4, Monad m5, Commutative m5) => m3 (m4 a) -> m1 (m2 (m3 (m4 (m5 b)))) -> m1 (m2 (m3 (m4 (m5 b))))
- DeepControl.Monad: (-->>==) :: (Monad m1, Monad2 m2, Monad3 m3, Monad4 m4) => m3 (m4 a) -> (a -> m1 (m2 (m3 (m4 b)))) -> m1 (m2 (m3 (m4 b)))
+ DeepControl.Monad: (-->>==) :: (Monad m1, Monad m2, Commutative m2, Monad m3, Commutative m3, Monad m4, Commutative m4) => m3 (m4 a) -> (a -> m1 (m2 (m3 (m4 b)))) -> m1 (m2 (m3 (m4 b)))
- DeepControl.Monad: (-->>>==) :: (Monad m1, Monad2 m2, Monad3 m3, Monad4 m4, Monad5 m5) => m3 (m4 (m5 a)) -> (a -> m1 (m2 (m3 (m4 (m5 b))))) -> m1 (m2 (m3 (m4 (m5 b))))
+ DeepControl.Monad: (-->>>==) :: (Monad m1, Monad m2, Commutative m2, Monad m3, Commutative m3, Monad m4, Commutative m4, Monad m5, Commutative m5) => m3 (m4 (m5 a)) -> (a -> m1 (m2 (m3 (m4 (m5 b))))) -> m1 (m2 (m3 (m4 (m5 b))))
- DeepControl.Monad: (-->>>~) :: (Monad m1, Monad2 m2, Monad3 m3, Monad4 m4, Monad5 m5) => m3 (m4 (m5 a)) -> m1 (m2 (m3 (m4 (m5 b)))) -> m1 (m2 (m3 (m4 (m5 b))))
+ DeepControl.Monad: (-->>>~) :: (Monad m1, Monad m2, Commutative m2, Monad m3, Commutative m3, Monad m4, Commutative m4, Monad m5, Commutative m5) => m3 (m4 (m5 a)) -> m1 (m2 (m3 (m4 (m5 b)))) -> m1 (m2 (m3 (m4 (m5 b))))
- DeepControl.Monad: (-->>~) :: (Monad m1, Monad2 m2, Monad3 m3, Monad4 m4) => m3 (m4 a) -> m1 (m2 (m3 (m4 b))) -> m1 (m2 (m3 (m4 b)))
+ DeepControl.Monad: (-->>~) :: (Monad m1, Monad m2, Commutative m2, Monad m3, Commutative m3, Monad m4, Commutative m4) => m3 (m4 a) -> m1 (m2 (m3 (m4 b))) -> m1 (m2 (m3 (m4 b)))
- DeepControl.Monad: (-->~) :: (Monad m1, Monad2 m2, Monad3 m3) => m3 a -> m1 (m2 (m3 b)) -> m1 (m2 (m3 b))
+ DeepControl.Monad: (-->~) :: (Monad m1, Monad m2, Commutative m2, Monad m3, Commutative m3) => m3 a -> m1 (m2 (m3 b)) -> m1 (m2 (m3 b))
- DeepControl.Monad: (->---==) :: (Monad m1, Monad2 m2, Monad3 m3, Monad4 m4, Monad5 m5) => m2 a -> (a -> m1 (m2 (m3 (m4 (m5 b))))) -> m1 (m2 (m3 (m4 (m5 b))))
+ DeepControl.Monad: (->---==) :: (Monad m1, Monad m2, Commutative m2, Monad m3, Commutative m3, Monad m4, Commutative m4, Monad m5, Commutative m5) => m2 a -> (a -> m1 (m2 (m3 (m4 (m5 b))))) -> m1 (m2 (m3 (m4 (m5 b))))
- DeepControl.Monad: (->---~) :: (Monad m1, Monad2 m2, Monad3 m3, Monad4 m4, Monad5 m5) => m2 a -> m1 (m2 (m3 (m4 (m5 b)))) -> m1 (m2 (m3 (m4 (m5 b))))
+ DeepControl.Monad: (->---~) :: (Monad m1, Monad m2, Commutative m2, Monad m3, Commutative m3, Monad m4, Commutative m4, Monad m5, Commutative m5) => m2 a -> m1 (m2 (m3 (m4 (m5 b)))) -> m1 (m2 (m3 (m4 (m5 b))))
- DeepControl.Monad: (->--==) :: (Monad m1, Monad2 m2, Monad3 m3, Monad4 m4) => m2 a -> (a -> m1 (m2 (m3 (m4 b)))) -> m1 (m2 (m3 (m4 b)))
+ DeepControl.Monad: (->--==) :: (Monad m1, Monad m2, Commutative m2, Monad m3, Commutative m3, Monad m4, Commutative m4) => m2 a -> (a -> m1 (m2 (m3 (m4 b)))) -> m1 (m2 (m3 (m4 b)))
- DeepControl.Monad: (->-->==) :: (Monad m1, Monad2 m2, Monad3 m3, Monad4 m4, Monad5 m5) => m2 (m5 a) -> (a -> m1 (m2 (m3 (m4 (m5 b))))) -> m1 (m2 (m3 (m4 (m5 b))))
+ DeepControl.Monad: (->-->==) :: (Monad m1, Monad m2, Commutative m2, Monad m3, Commutative m3, Monad m4, Commutative m4, Monad m5, Commutative m5) => m2 (m5 a) -> (a -> m1 (m2 (m3 (m4 (m5 b))))) -> m1 (m2 (m3 (m4 (m5 b))))
- DeepControl.Monad: (->-->~) :: (Monad m1, Monad2 m2, Monad3 m3, Monad4 m4, Monad5 m5) => m2 (m5 a) -> m1 (m2 (m3 (m4 (m5 b)))) -> m1 (m2 (m3 (m4 (m5 b))))
+ DeepControl.Monad: (->-->~) :: (Monad m1, Monad m2, Commutative m2, Monad m3, Commutative m3, Monad m4, Commutative m4, Monad m5, Commutative m5) => m2 (m5 a) -> m1 (m2 (m3 (m4 (m5 b)))) -> m1 (m2 (m3 (m4 (m5 b))))
- DeepControl.Monad: (->--~) :: (Monad m1, Monad2 m2, Monad3 m3, Monad4 m4) => m2 a -> m1 (m2 (m3 (m4 b))) -> m1 (m2 (m3 (m4 b)))
+ DeepControl.Monad: (->--~) :: (Monad m1, Monad m2, Commutative m2, Monad m3, Commutative m3, Monad m4, Commutative m4) => m2 a -> m1 (m2 (m3 (m4 b))) -> m1 (m2 (m3 (m4 b)))
- DeepControl.Monad: (->-==) :: (Monad m1, Monad2 m2, Monad3 m3) => m2 a -> (a -> m1 (m2 (m3 b))) -> m1 (m2 (m3 b))
+ DeepControl.Monad: (->-==) :: (Monad m1, Monad m2, Commutative m2, Monad m3, Commutative m3) => m2 a -> (a -> m1 (m2 (m3 b))) -> m1 (m2 (m3 b))
- DeepControl.Monad: (->->-==) :: (Monad m1, Monad2 m2, Monad3 m3, Monad4 m4, Monad5 m5) => m2 (m4 a) -> (a -> m1 (m2 (m3 (m4 (m5 b))))) -> m1 (m2 (m3 (m4 (m5 b))))
+ DeepControl.Monad: (->->-==) :: (Monad m1, Monad m2, Commutative m2, Monad m3, Commutative m3, Monad m4, Commutative m4, Monad m5, Commutative m5) => m2 (m4 a) -> (a -> m1 (m2 (m3 (m4 (m5 b))))) -> m1 (m2 (m3 (m4 (m5 b))))
- DeepControl.Monad: (->->-~) :: (Monad m1, Monad2 m2, Monad3 m3, Monad4 m4, Monad5 m5) => m2 (m4 a) -> m1 (m2 (m3 (m4 (m5 b)))) -> m1 (m2 (m3 (m4 (m5 b))))
+ DeepControl.Monad: (->->-~) :: (Monad m1, Monad m2, Commutative m2, Monad m3, Commutative m3, Monad m4, Commutative m4, Monad m5, Commutative m5) => m2 (m4 a) -> m1 (m2 (m3 (m4 (m5 b)))) -> m1 (m2 (m3 (m4 (m5 b))))
- DeepControl.Monad: (->->==) :: (Monad m1, Monad2 m2, Monad3 m3, Monad4 m4) => m2 (m4 a) -> (a -> m1 (m2 (m3 (m4 b)))) -> m1 (m2 (m3 (m4 b)))
+ DeepControl.Monad: (->->==) :: (Monad m1, Monad m2, Commutative m2, Monad m3, Commutative m3, Monad m4, Commutative m4) => m2 (m4 a) -> (a -> m1 (m2 (m3 (m4 b)))) -> m1 (m2 (m3 (m4 b)))
- DeepControl.Monad: (->->>==) :: (Monad m1, Monad2 m2, Monad3 m3, Monad4 m4, Monad5 m5) => m2 (m4 (m5 a)) -> (a -> m1 (m2 (m3 (m4 (m5 b))))) -> m1 (m2 (m3 (m4 (m5 b))))
+ DeepControl.Monad: (->->>==) :: (Monad m1, Monad m2, Commutative m2, Monad m3, Commutative m3, Monad m4, Commutative m4, Monad m5, Commutative m5) => m2 (m4 (m5 a)) -> (a -> m1 (m2 (m3 (m4 (m5 b))))) -> m1 (m2 (m3 (m4 (m5 b))))
- DeepControl.Monad: (->->>~) :: (Monad m1, Monad2 m2, Monad3 m3, Monad4 m4, Monad5 m5) => m2 (m4 (m5 a)) -> m1 (m2 (m3 (m4 (m5 b)))) -> m1 (m2 (m3 (m4 (m5 b))))
+ DeepControl.Monad: (->->>~) :: (Monad m1, Monad m2, Commutative m2, Monad m3, Commutative m3, Monad m4, Commutative m4, Monad m5, Commutative m5) => m2 (m4 (m5 a)) -> m1 (m2 (m3 (m4 (m5 b)))) -> m1 (m2 (m3 (m4 (m5 b))))
- DeepControl.Monad: (->->~) :: (Monad m1, Monad2 m2, Monad3 m3, Monad4 m4) => m2 (m4 a) -> m1 (m2 (m3 (m4 b))) -> m1 (m2 (m3 (m4 b)))
+ DeepControl.Monad: (->->~) :: (Monad m1, Monad m2, Commutative m2, Monad m3, Commutative m3, Monad m4, Commutative m4) => m2 (m4 a) -> m1 (m2 (m3 (m4 b))) -> m1 (m2 (m3 (m4 b)))
- DeepControl.Monad: (->-~) :: (Monad m1, Monad2 m2, Monad3 m3) => m2 a -> m1 (m2 (m3 b)) -> m1 (m2 (m3 b))
+ DeepControl.Monad: (->-~) :: (Monad m1, Monad m2, Commutative m2, Monad m3, Commutative m3) => m2 a -> m1 (m2 (m3 b)) -> m1 (m2 (m3 b))
- DeepControl.Monad: (->==) :: (Monad m1, Monad2 m2) => m2 a -> (a -> m1 (m2 b)) -> m1 (m2 b)
+ DeepControl.Monad: (->==) :: (Monad m1, Monad m2, Commutative m2) => m2 a -> (a -> m1 (m2 b)) -> m1 (m2 b)
- DeepControl.Monad: (->>--==) :: (Monad m1, Monad2 m2, Monad3 m3, Monad4 m4, Monad5 m5) => m2 (m3 a) -> (a -> m1 (m2 (m3 (m4 (m5 b))))) -> m1 (m2 (m3 (m4 (m5 b))))
+ DeepControl.Monad: (->>--==) :: (Monad m1, Monad m2, Commutative m2, Monad m3, Commutative m3, Monad m4, Commutative m4, Monad m5, Commutative m5) => m2 (m3 a) -> (a -> m1 (m2 (m3 (m4 (m5 b))))) -> m1 (m2 (m3 (m4 (m5 b))))
- DeepControl.Monad: (->>--~) :: (Monad m1, Monad2 m2, Monad3 m3, Monad4 m4, Monad5 m5) => m2 (m3 a) -> m1 (m2 (m3 (m4 (m5 b)))) -> m1 (m2 (m3 (m4 (m5 b))))
+ DeepControl.Monad: (->>--~) :: (Monad m1, Monad m2, Commutative m2, Monad m3, Commutative m3, Monad m4, Commutative m4, Monad m5, Commutative m5) => m2 (m3 a) -> m1 (m2 (m3 (m4 (m5 b)))) -> m1 (m2 (m3 (m4 (m5 b))))
- DeepControl.Monad: (->>-==) :: (Monad m1, Monad2 m2, Monad3 m3, Monad4 m4) => m2 (m3 a) -> (a -> m1 (m2 (m3 (m4 b)))) -> m1 (m2 (m3 (m4 b)))
+ DeepControl.Monad: (->>-==) :: (Monad m1, Monad m2, Commutative m2, Monad m3, Commutative m3, Monad m4, Commutative m4) => m2 (m3 a) -> (a -> m1 (m2 (m3 (m4 b)))) -> m1 (m2 (m3 (m4 b)))
- DeepControl.Monad: (->>->==) :: (Monad m1, Monad2 m2, Monad3 m3, Monad4 m4, Monad5 m5) => m2 (m3 (m5 a)) -> (a -> m1 (m2 (m3 (m4 (m5 b))))) -> m1 (m2 (m3 (m4 (m5 b))))
+ DeepControl.Monad: (->>->==) :: (Monad m1, Monad m2, Commutative m2, Monad m3, Commutative m3, Monad m4, Commutative m4, Monad m5, Commutative m5) => m2 (m3 (m5 a)) -> (a -> m1 (m2 (m3 (m4 (m5 b))))) -> m1 (m2 (m3 (m4 (m5 b))))
- DeepControl.Monad: (->>->~) :: (Monad m1, Monad2 m2, Monad3 m3, Monad4 m4, Monad5 m5) => m2 (m3 (m5 a)) -> m1 (m2 (m3 (m4 (m5 b)))) -> m1 (m2 (m3 (m4 (m5 b))))
+ DeepControl.Monad: (->>->~) :: (Monad m1, Monad m2, Commutative m2, Monad m3, Commutative m3, Monad m4, Commutative m4, Monad m5, Commutative m5) => m2 (m3 (m5 a)) -> m1 (m2 (m3 (m4 (m5 b)))) -> m1 (m2 (m3 (m4 (m5 b))))
- DeepControl.Monad: (->>-~) :: (Monad m1, Monad2 m2, Monad3 m3, Monad4 m4) => m2 (m3 a) -> m1 (m2 (m3 (m4 b))) -> m1 (m2 (m3 (m4 b)))
+ DeepControl.Monad: (->>-~) :: (Monad m1, Monad m2, Commutative m2, Monad m3, Commutative m3, Monad m4, Commutative m4) => m2 (m3 a) -> m1 (m2 (m3 (m4 b))) -> m1 (m2 (m3 (m4 b)))
- DeepControl.Monad: (->>==) :: (Monad m1, Monad2 m2, Monad3 m3) => m2 (m3 a) -> (a -> m1 (m2 (m3 b))) -> m1 (m2 (m3 b))
+ DeepControl.Monad: (->>==) :: (Monad m1, Monad m2, Commutative m2, Monad m3, Commutative m3) => m2 (m3 a) -> (a -> m1 (m2 (m3 b))) -> m1 (m2 (m3 b))
- DeepControl.Monad: (->>>-==) :: (Monad m1, Monad2 m2, Monad3 m3, Monad4 m4, Monad5 m5) => m2 (m3 (m4 a)) -> (a -> m1 (m2 (m3 (m4 (m5 b))))) -> m1 (m2 (m3 (m4 (m5 b))))
+ DeepControl.Monad: (->>>-==) :: (Monad m1, Monad m2, Commutative m2, Monad m3, Commutative m3, Monad m4, Commutative m4, Monad m5, Commutative m5) => m2 (m3 (m4 a)) -> (a -> m1 (m2 (m3 (m4 (m5 b))))) -> m1 (m2 (m3 (m4 (m5 b))))
- DeepControl.Monad: (->>>-~) :: (Monad m1, Monad2 m2, Monad3 m3, Monad4 m4, Monad5 m5) => m2 (m3 (m4 a)) -> m1 (m2 (m3 (m4 (m5 b)))) -> m1 (m2 (m3 (m4 (m5 b))))
+ DeepControl.Monad: (->>>-~) :: (Monad m1, Monad m2, Commutative m2, Monad m3, Commutative m3, Monad m4, Commutative m4, Monad m5, Commutative m5) => m2 (m3 (m4 a)) -> m1 (m2 (m3 (m4 (m5 b)))) -> m1 (m2 (m3 (m4 (m5 b))))
- DeepControl.Monad: (->>>==) :: (Monad m1, Monad2 m2, Monad3 m3, Monad4 m4) => m2 (m3 (m4 a)) -> (a -> m1 (m2 (m3 (m4 b)))) -> m1 (m2 (m3 (m4 b)))
+ DeepControl.Monad: (->>>==) :: (Monad m1, Monad m2, Commutative m2, Monad m3, Commutative m3, Monad m4, Commutative m4) => m2 (m3 (m4 a)) -> (a -> m1 (m2 (m3 (m4 b)))) -> m1 (m2 (m3 (m4 b)))
- DeepControl.Monad: (->>>>==) :: (Monad m1, Monad2 m2, Monad3 m3, Monad4 m4, Monad5 m5) => m2 (m3 (m4 (m5 a))) -> (a -> m1 (m2 (m3 (m4 (m5 b))))) -> m1 (m2 (m3 (m4 (m5 b))))
+ DeepControl.Monad: (->>>>==) :: (Monad m1, Monad m2, Commutative m2, Monad m3, Commutative m3, Monad m4, Commutative m4, Monad m5, Commutative m5) => m2 (m3 (m4 (m5 a))) -> (a -> m1 (m2 (m3 (m4 (m5 b))))) -> m1 (m2 (m3 (m4 (m5 b))))
- DeepControl.Monad: (->>>>~) :: (Monad m1, Monad2 m2, Monad3 m3, Monad4 m4, Monad5 m5) => m2 (m3 (m4 (m5 a))) -> m1 (m2 (m3 (m4 (m5 b)))) -> m1 (m2 (m3 (m4 (m5 b))))
+ DeepControl.Monad: (->>>>~) :: (Monad m1, Monad m2, Commutative m2, Monad m3, Commutative m3, Monad m4, Commutative m4, Monad m5, Commutative m5) => m2 (m3 (m4 (m5 a))) -> m1 (m2 (m3 (m4 (m5 b)))) -> m1 (m2 (m3 (m4 (m5 b))))
- DeepControl.Monad: (->>>~) :: (Monad m1, Monad2 m2, Monad3 m3, Monad4 m4) => m2 (m3 (m4 a)) -> m1 (m2 (m3 (m4 b))) -> m1 (m2 (m3 (m4 b)))
+ DeepControl.Monad: (->>>~) :: (Monad m1, Monad m2, Commutative m2, Monad m3, Commutative m3, Monad m4, Commutative m4) => m2 (m3 (m4 a)) -> m1 (m2 (m3 (m4 b))) -> m1 (m2 (m3 (m4 b)))
- DeepControl.Monad: (->>~) :: (Monad m1, Monad2 m2, Monad3 m3) => m2 (m3 a) -> m1 (m2 (m3 b)) -> m1 (m2 (m3 b))
+ DeepControl.Monad: (->>~) :: (Monad m1, Monad m2, Commutative m2, Monad m3, Commutative m3) => m2 (m3 a) -> m1 (m2 (m3 b)) -> m1 (m2 (m3 b))
- DeepControl.Monad: (->~) :: (Monad m1, Monad2 m2) => m2 a -> m1 (m2 b) -> m1 (m2 b)
+ DeepControl.Monad: (->~) :: (Monad m1, Monad m2, Commutative m2) => m2 a -> m1 (m2 b) -> m1 (m2 b)
- DeepControl.Monad: (>----==) :: (Monad m1, Monad2 m2, Monad3 m3, Monad4 m4, Monad5 m5) => m1 a -> (a -> m1 (m2 (m3 (m4 (m5 b))))) -> m1 (m2 (m3 (m4 (m5 b))))
+ DeepControl.Monad: (>----==) :: (Monad m1, Monad m2, Commutative m2, Monad m3, Commutative m3, Monad m4, Commutative m4, Monad m5, Commutative m5) => m1 a -> (a -> m1 (m2 (m3 (m4 (m5 b))))) -> m1 (m2 (m3 (m4 (m5 b))))
- DeepControl.Monad: (>----~) :: (Monad m1, Monad2 m2, Monad3 m3, Monad4 m4, Monad5 m5) => m1 a -> m1 (m2 (m3 (m4 (m5 b)))) -> m1 (m2 (m3 (m4 (m5 b))))
+ DeepControl.Monad: (>----~) :: (Monad m1, Monad m2, Commutative m2, Monad m3, Commutative m3, Monad m4, Commutative m4, Monad m5, Commutative m5) => m1 a -> m1 (m2 (m3 (m4 (m5 b)))) -> m1 (m2 (m3 (m4 (m5 b))))
- DeepControl.Monad: (>---==) :: (Monad m1, Monad2 m2, Monad3 m3, Monad4 m4) => m1 a -> (a -> m1 (m2 (m3 (m4 b)))) -> m1 (m2 (m3 (m4 b)))
+ DeepControl.Monad: (>---==) :: (Monad m1, Monad m2, Commutative m2, Monad m3, Commutative m3, Monad m4, Commutative m4) => m1 a -> (a -> m1 (m2 (m3 (m4 b)))) -> m1 (m2 (m3 (m4 b)))
- DeepControl.Monad: (>--->==) :: (Monad m1, Monad2 m2, Monad3 m3, Monad4 m4, Monad5 m5) => m1 (m5 a) -> (a -> m1 (m2 (m3 (m4 (m5 b))))) -> m1 (m2 (m3 (m4 (m5 b))))
+ DeepControl.Monad: (>--->==) :: (Monad m1, Monad m2, Commutative m2, Monad m3, Commutative m3, Monad m4, Commutative m4, Monad m5, Commutative m5) => m1 (m5 a) -> (a -> m1 (m2 (m3 (m4 (m5 b))))) -> m1 (m2 (m3 (m4 (m5 b))))
- DeepControl.Monad: (>--->~) :: (Monad m1, Monad2 m2, Monad3 m3, Monad4 m4, Monad5 m5) => m1 (m5 a) -> m1 (m2 (m3 (m4 (m5 b)))) -> m1 (m2 (m3 (m4 (m5 b))))
+ DeepControl.Monad: (>--->~) :: (Monad m1, Monad m2, Commutative m2, Monad m3, Commutative m3, Monad m4, Commutative m4, Monad m5, Commutative m5) => m1 (m5 a) -> m1 (m2 (m3 (m4 (m5 b)))) -> m1 (m2 (m3 (m4 (m5 b))))
- DeepControl.Monad: (>---~) :: (Monad m1, Monad2 m2, Monad3 m3, Monad4 m4) => m1 a -> m1 (m2 (m3 (m4 b))) -> m1 (m2 (m3 (m4 b)))
+ DeepControl.Monad: (>---~) :: (Monad m1, Monad m2, Commutative m2, Monad m3, Commutative m3, Monad m4, Commutative m4) => m1 a -> m1 (m2 (m3 (m4 b))) -> m1 (m2 (m3 (m4 b)))
- DeepControl.Monad: (>--==) :: (Monad m1, Monad2 m2, Monad3 m3) => m1 a -> (a -> m1 (m2 (m3 b))) -> m1 (m2 (m3 b))
+ DeepControl.Monad: (>--==) :: (Monad m1, Monad m2, Commutative m2, Monad m3, Commutative m3) => m1 a -> (a -> m1 (m2 (m3 b))) -> m1 (m2 (m3 b))
- DeepControl.Monad: (>-->-==) :: (Monad m1, Monad2 m2, Monad3 m3, Monad4 m4, Monad5 m5) => m1 (m4 a) -> (a -> m1 (m2 (m3 (m4 (m5 b))))) -> m1 (m2 (m3 (m4 (m5 b))))
+ DeepControl.Monad: (>-->-==) :: (Monad m1, Monad m2, Commutative m2, Monad m3, Commutative m3, Monad m4, Commutative m4, Monad m5, Commutative m5) => m1 (m4 a) -> (a -> m1 (m2 (m3 (m4 (m5 b))))) -> m1 (m2 (m3 (m4 (m5 b))))
- DeepControl.Monad: (>-->-~) :: (Monad m1, Monad2 m2, Monad3 m3, Monad4 m4, Monad5 m5) => m1 (m4 a) -> m1 (m2 (m3 (m4 (m5 b)))) -> m1 (m2 (m3 (m4 (m5 b))))
+ DeepControl.Monad: (>-->-~) :: (Monad m1, Monad m2, Commutative m2, Monad m3, Commutative m3, Monad m4, Commutative m4, Monad m5, Commutative m5) => m1 (m4 a) -> m1 (m2 (m3 (m4 (m5 b)))) -> m1 (m2 (m3 (m4 (m5 b))))
- DeepControl.Monad: (>-->==) :: (Monad m1, Monad2 m2, Monad3 m3, Monad4 m4) => m1 (m4 a) -> (a -> m1 (m2 (m3 (m4 b)))) -> m1 (m2 (m3 (m4 b)))
+ DeepControl.Monad: (>-->==) :: (Monad m1, Monad m2, Commutative m2, Monad m3, Commutative m3, Monad m4, Commutative m4) => m1 (m4 a) -> (a -> m1 (m2 (m3 (m4 b)))) -> m1 (m2 (m3 (m4 b)))
- DeepControl.Monad: (>-->>==) :: (Monad m1, Monad2 m2, Monad3 m3, Monad4 m4, Monad5 m5) => m1 (m4 (m5 a)) -> (a -> m1 (m2 (m3 (m4 (m5 b))))) -> m1 (m2 (m3 (m4 (m5 b))))
+ DeepControl.Monad: (>-->>==) :: (Monad m1, Monad m2, Commutative m2, Monad m3, Commutative m3, Monad m4, Commutative m4, Monad m5, Commutative m5) => m1 (m4 (m5 a)) -> (a -> m1 (m2 (m3 (m4 (m5 b))))) -> m1 (m2 (m3 (m4 (m5 b))))
- DeepControl.Monad: (>-->>~) :: (Monad m1, Monad2 m2, Monad3 m3, Monad4 m4, Monad5 m5) => m1 (m4 (m5 a)) -> m1 (m2 (m3 (m4 (m5 b)))) -> m1 (m2 (m3 (m4 (m5 b))))
+ DeepControl.Monad: (>-->>~) :: (Monad m1, Monad m2, Commutative m2, Monad m3, Commutative m3, Monad m4, Commutative m4, Monad m5, Commutative m5) => m1 (m4 (m5 a)) -> m1 (m2 (m3 (m4 (m5 b)))) -> m1 (m2 (m3 (m4 (m5 b))))
- DeepControl.Monad: (>-->~) :: (Monad m1, Monad2 m2, Monad3 m3, Monad4 m4) => m1 (m4 a) -> m1 (m2 (m3 (m4 b))) -> m1 (m2 (m3 (m4 b)))
+ DeepControl.Monad: (>-->~) :: (Monad m1, Monad m2, Commutative m2, Monad m3, Commutative m3, Monad m4, Commutative m4) => m1 (m4 a) -> m1 (m2 (m3 (m4 b))) -> m1 (m2 (m3 (m4 b)))
- DeepControl.Monad: (>--~) :: (Monad m1, Monad2 m2, Monad3 m3) => m1 a -> m1 (m2 (m3 b)) -> m1 (m2 (m3 b))
+ DeepControl.Monad: (>--~) :: (Monad m1, Monad m2, Commutative m2, Monad m3, Commutative m3) => m1 a -> m1 (m2 (m3 b)) -> m1 (m2 (m3 b))
- DeepControl.Monad: (>-==) :: (Monad m1, Monad2 m2) => m1 a -> (a -> m1 (m2 b)) -> m1 (m2 b)
+ DeepControl.Monad: (>-==) :: (Monad m1, Monad m2, Commutative m2) => m1 a -> (a -> m1 (m2 b)) -> m1 (m2 b)
- DeepControl.Monad: (>->--==) :: (Monad m1, Monad2 m2, Monad3 m3, Monad4 m4, Monad5 m5) => m1 (m3 a) -> (a -> m1 (m2 (m3 (m4 (m5 b))))) -> m1 (m2 (m3 (m4 (m5 b))))
+ DeepControl.Monad: (>->--==) :: (Monad m1, Monad m2, Commutative m2, Monad m3, Commutative m3, Monad m4, Commutative m4, Monad m5, Commutative m5) => m1 (m3 a) -> (a -> m1 (m2 (m3 (m4 (m5 b))))) -> m1 (m2 (m3 (m4 (m5 b))))
- DeepControl.Monad: (>->--~) :: (Monad m1, Monad2 m2, Monad3 m3, Monad4 m4, Monad5 m5) => m1 (m3 a) -> m1 (m2 (m3 (m4 (m5 b)))) -> m1 (m2 (m3 (m4 (m5 b))))
+ DeepControl.Monad: (>->--~) :: (Monad m1, Monad m2, Commutative m2, Monad m3, Commutative m3, Monad m4, Commutative m4, Monad m5, Commutative m5) => m1 (m3 a) -> m1 (m2 (m3 (m4 (m5 b)))) -> m1 (m2 (m3 (m4 (m5 b))))
- DeepControl.Monad: (>->-==) :: (Monad m1, Monad2 m2, Monad3 m3, Monad4 m4) => m1 (m3 a) -> (a -> m1 (m2 (m3 (m4 b)))) -> m1 (m2 (m3 (m4 b)))
+ DeepControl.Monad: (>->-==) :: (Monad m1, Monad m2, Commutative m2, Monad m3, Commutative m3, Monad m4, Commutative m4) => m1 (m3 a) -> (a -> m1 (m2 (m3 (m4 b)))) -> m1 (m2 (m3 (m4 b)))
- DeepControl.Monad: (>->->==) :: (Monad m1, Monad2 m2, Monad3 m3, Monad4 m4, Monad5 m5) => m1 (m3 (m5 a)) -> (a -> m1 (m2 (m3 (m4 (m5 b))))) -> m1 (m2 (m3 (m4 (m5 b))))
+ DeepControl.Monad: (>->->==) :: (Monad m1, Monad m2, Commutative m2, Monad m3, Commutative m3, Monad m4, Commutative m4, Monad m5, Commutative m5) => m1 (m3 (m5 a)) -> (a -> m1 (m2 (m3 (m4 (m5 b))))) -> m1 (m2 (m3 (m4 (m5 b))))
- DeepControl.Monad: (>->->~) :: (Monad m1, Monad2 m2, Monad3 m3, Monad4 m4, Monad5 m5) => m1 (m3 (m5 a)) -> m1 (m2 (m3 (m4 (m5 b)))) -> m1 (m2 (m3 (m4 (m5 b))))
+ DeepControl.Monad: (>->->~) :: (Monad m1, Monad m2, Commutative m2, Monad m3, Commutative m3, Monad m4, Commutative m4, Monad m5, Commutative m5) => m1 (m3 (m5 a)) -> m1 (m2 (m3 (m4 (m5 b)))) -> m1 (m2 (m3 (m4 (m5 b))))
- DeepControl.Monad: (>->-~) :: (Monad m1, Monad2 m2, Monad3 m3, Monad4 m4) => m1 (m3 a) -> m1 (m2 (m3 (m4 b))) -> m1 (m2 (m3 (m4 b)))
+ DeepControl.Monad: (>->-~) :: (Monad m1, Monad m2, Commutative m2, Monad m3, Commutative m3, Monad m4, Commutative m4) => m1 (m3 a) -> m1 (m2 (m3 (m4 b))) -> m1 (m2 (m3 (m4 b)))
- DeepControl.Monad: (>->==) :: (Monad m1, Monad2 m2, Monad3 m3) => m1 (m3 a) -> (a -> m1 (m2 (m3 b))) -> m1 (m2 (m3 b))
+ DeepControl.Monad: (>->==) :: (Monad m1, Monad m2, Commutative m2, Monad m3, Commutative m3) => m1 (m3 a) -> (a -> m1 (m2 (m3 b))) -> m1 (m2 (m3 b))
- DeepControl.Monad: (>->>-==) :: (Monad m1, Monad2 m2, Monad3 m3, Monad4 m4, Monad5 m5) => m1 (m3 (m4 a)) -> (a -> m1 (m2 (m3 (m4 (m5 b))))) -> m1 (m2 (m3 (m4 (m5 b))))
+ DeepControl.Monad: (>->>-==) :: (Monad m1, Monad m2, Commutative m2, Monad m3, Commutative m3, Monad m4, Commutative m4, Monad m5, Commutative m5) => m1 (m3 (m4 a)) -> (a -> m1 (m2 (m3 (m4 (m5 b))))) -> m1 (m2 (m3 (m4 (m5 b))))
- DeepControl.Monad: (>->>-~) :: (Monad m1, Monad2 m2, Monad3 m3, Monad4 m4, Monad5 m5) => m1 (m3 (m4 a)) -> m1 (m2 (m3 (m4 (m5 b)))) -> m1 (m2 (m3 (m4 (m5 b))))
+ DeepControl.Monad: (>->>-~) :: (Monad m1, Monad m2, Commutative m2, Monad m3, Commutative m3, Monad m4, Commutative m4, Monad m5, Commutative m5) => m1 (m3 (m4 a)) -> m1 (m2 (m3 (m4 (m5 b)))) -> m1 (m2 (m3 (m4 (m5 b))))
- DeepControl.Monad: (>->>==) :: (Monad m1, Monad2 m2, Monad3 m3, Monad4 m4) => m1 (m3 (m4 a)) -> (a -> m1 (m2 (m3 (m4 b)))) -> m1 (m2 (m3 (m4 b)))
+ DeepControl.Monad: (>->>==) :: (Monad m1, Monad m2, Commutative m2, Monad m3, Commutative m3, Monad m4, Commutative m4) => m1 (m3 (m4 a)) -> (a -> m1 (m2 (m3 (m4 b)))) -> m1 (m2 (m3 (m4 b)))
- DeepControl.Monad: (>->>>==) :: (Monad m1, Monad2 m2, Monad3 m3, Monad4 m4, Monad5 m5) => m1 (m3 (m4 (m5 a))) -> (a -> m1 (m2 (m3 (m4 (m5 b))))) -> m1 (m2 (m3 (m4 (m5 b))))
+ DeepControl.Monad: (>->>>==) :: (Monad m1, Monad m2, Commutative m2, Monad m3, Commutative m3, Monad m4, Commutative m4, Monad m5, Commutative m5) => m1 (m3 (m4 (m5 a))) -> (a -> m1 (m2 (m3 (m4 (m5 b))))) -> m1 (m2 (m3 (m4 (m5 b))))
- DeepControl.Monad: (>->>>~) :: (Monad m1, Monad2 m2, Monad3 m3, Monad4 m4, Monad5 m5) => m1 (m3 (m4 (m5 a))) -> m1 (m2 (m3 (m4 (m5 b)))) -> m1 (m2 (m3 (m4 (m5 b))))
+ DeepControl.Monad: (>->>>~) :: (Monad m1, Monad m2, Commutative m2, Monad m3, Commutative m3, Monad m4, Commutative m4, Monad m5, Commutative m5) => m1 (m3 (m4 (m5 a))) -> m1 (m2 (m3 (m4 (m5 b)))) -> m1 (m2 (m3 (m4 (m5 b))))
- DeepControl.Monad: (>->>~) :: (Monad m1, Monad2 m2, Monad3 m3, Monad4 m4) => m1 (m3 (m4 a)) -> m1 (m2 (m3 (m4 b))) -> m1 (m2 (m3 (m4 b)))
+ DeepControl.Monad: (>->>~) :: (Monad m1, Monad m2, Commutative m2, Monad m3, Commutative m3, Monad m4, Commutative m4) => m1 (m3 (m4 a)) -> m1 (m2 (m3 (m4 b))) -> m1 (m2 (m3 (m4 b)))
- DeepControl.Monad: (>->~) :: (Monad m1, Monad2 m2, Monad3 m3) => m1 (m3 a) -> m1 (m2 (m3 b)) -> m1 (m2 (m3 b))
+ DeepControl.Monad: (>->~) :: (Monad m1, Monad m2, Commutative m2, Monad m3, Commutative m3) => m1 (m3 a) -> m1 (m2 (m3 b)) -> m1 (m2 (m3 b))
- DeepControl.Monad: (>-~) :: (Monad m1, Monad2 m2) => m1 a -> m1 (m2 b) -> m1 (m2 b)
+ DeepControl.Monad: (>-~) :: (Monad m1, Monad m2, Commutative m2) => m1 a -> m1 (m2 b) -> m1 (m2 b)
- DeepControl.Monad: (>=====>) :: (Monad m1, Monad2 m2, Monad3 m3, Monad4 m4, Monad5 m5) => (a -> m1 (m2 (m3 (m4 (m5 b))))) -> (b -> m1 (m2 (m3 (m4 (m5 c))))) -> a -> m1 (m2 (m3 (m4 (m5 c))))
+ DeepControl.Monad: (>=====>) :: (Monad m1, Monad m2, Commutative m2, Monad m3, Commutative m3, Monad m4, Commutative m4, Monad m5, Commutative m5) => (a -> m1 (m2 (m3 (m4 (m5 b))))) -> (b -> m1 (m2 (m3 (m4 (m5 c))))) -> a -> m1 (m2 (m3 (m4 (m5 c))))
- DeepControl.Monad: (>====>) :: (Monad m1, Monad2 m2, Monad3 m3, Monad4 m4) => (a -> m1 (m2 (m3 (m4 b)))) -> (b -> m1 (m2 (m3 (m4 c)))) -> a -> m1 (m2 (m3 (m4 c)))
+ DeepControl.Monad: (>====>) :: (Monad m1, Monad m2, Commutative m2, Monad m3, Commutative m3, Monad m4, Commutative m4) => (a -> m1 (m2 (m3 (m4 b)))) -> (b -> m1 (m2 (m3 (m4 c)))) -> a -> m1 (m2 (m3 (m4 c)))
- DeepControl.Monad: (>===>) :: (Monad m1, Monad2 m2, Monad3 m3) => (a -> m1 (m2 (m3 b))) -> (b -> m1 (m2 (m3 c))) -> a -> m1 (m2 (m3 c))
+ DeepControl.Monad: (>===>) :: (Monad m1, Monad m2, Commutative m2, Monad m3, Commutative m3) => (a -> m1 (m2 (m3 b))) -> (b -> m1 (m2 (m3 c))) -> a -> m1 (m2 (m3 c))
- DeepControl.Monad: (>==>) :: (Monad m1, Monad2 m2) => (a -> m1 (m2 b)) -> (b -> m1 (m2 c)) -> a -> m1 (m2 c)
+ DeepControl.Monad: (>==>) :: (Monad m1, Monad m2, Commutative m2) => (a -> m1 (m2 b)) -> (b -> m1 (m2 c)) -> a -> m1 (m2 c)
- DeepControl.Monad: (>>---==) :: (Monad m1, Monad2 m2, Monad3 m3, Monad4 m4, Monad5 m5) => m1 (m2 a) -> (a -> m1 (m2 (m3 (m4 (m5 b))))) -> m1 (m2 (m3 (m4 (m5 b))))
+ DeepControl.Monad: (>>---==) :: (Monad m1, Monad m2, Commutative m2, Monad m3, Commutative m3, Monad m4, Commutative m4, Monad m5, Commutative m5) => m1 (m2 a) -> (a -> m1 (m2 (m3 (m4 (m5 b))))) -> m1 (m2 (m3 (m4 (m5 b))))
- DeepControl.Monad: (>>---~) :: (Monad m1, Monad2 m2, Monad3 m3, Monad4 m4, Monad5 m5) => m1 (m2 a) -> m1 (m2 (m3 (m4 (m5 b)))) -> m1 (m2 (m3 (m4 (m5 b))))
+ DeepControl.Monad: (>>---~) :: (Monad m1, Monad m2, Commutative m2, Monad m3, Commutative m3, Monad m4, Commutative m4, Monad m5, Commutative m5) => m1 (m2 a) -> m1 (m2 (m3 (m4 (m5 b)))) -> m1 (m2 (m3 (m4 (m5 b))))
- DeepControl.Monad: (>>--==) :: (Monad m1, Monad2 m2, Monad3 m3, Monad4 m4) => m1 (m2 a) -> (a -> m1 (m2 (m3 (m4 b)))) -> m1 (m2 (m3 (m4 b)))
+ DeepControl.Monad: (>>--==) :: (Monad m1, Monad m2, Commutative m2, Monad m3, Commutative m3, Monad m4, Commutative m4) => m1 (m2 a) -> (a -> m1 (m2 (m3 (m4 b)))) -> m1 (m2 (m3 (m4 b)))
- DeepControl.Monad: (>>-->==) :: (Monad m1, Monad2 m2, Monad3 m3, Monad4 m4, Monad5 m5) => m1 (m2 (m5 a)) -> (a -> m1 (m2 (m3 (m4 (m5 b))))) -> m1 (m2 (m3 (m4 (m5 b))))
+ DeepControl.Monad: (>>-->==) :: (Monad m1, Monad m2, Commutative m2, Monad m3, Commutative m3, Monad m4, Commutative m4, Monad m5, Commutative m5) => m1 (m2 (m5 a)) -> (a -> m1 (m2 (m3 (m4 (m5 b))))) -> m1 (m2 (m3 (m4 (m5 b))))
- DeepControl.Monad: (>>-->~) :: (Monad m1, Monad2 m2, Monad3 m3, Monad4 m4, Monad5 m5) => m1 (m2 (m5 a)) -> m1 (m2 (m3 (m4 (m5 b)))) -> m1 (m2 (m3 (m4 (m5 b))))
+ DeepControl.Monad: (>>-->~) :: (Monad m1, Monad m2, Commutative m2, Monad m3, Commutative m3, Monad m4, Commutative m4, Monad m5, Commutative m5) => m1 (m2 (m5 a)) -> m1 (m2 (m3 (m4 (m5 b)))) -> m1 (m2 (m3 (m4 (m5 b))))
- DeepControl.Monad: (>>--~) :: (Monad m1, Monad2 m2, Monad3 m3, Monad4 m4) => m1 (m2 a) -> m1 (m2 (m3 (m4 b))) -> m1 (m2 (m3 (m4 b)))
+ DeepControl.Monad: (>>--~) :: (Monad m1, Monad m2, Commutative m2, Monad m3, Commutative m3, Monad m4, Commutative m4) => m1 (m2 a) -> m1 (m2 (m3 (m4 b))) -> m1 (m2 (m3 (m4 b)))
- DeepControl.Monad: (>>-==) :: (Monad m1, Monad2 m2, Monad3 m3) => m1 (m2 a) -> (a -> m1 (m2 (m3 b))) -> m1 (m2 (m3 b))
+ DeepControl.Monad: (>>-==) :: (Monad m1, Monad m2, Commutative m2, Monad m3, Commutative m3) => m1 (m2 a) -> (a -> m1 (m2 (m3 b))) -> m1 (m2 (m3 b))
- DeepControl.Monad: (>>->-==) :: (Monad m1, Monad2 m2, Monad3 m3, Monad4 m4, Monad5 m5) => m1 (m2 (m4 a)) -> (a -> m1 (m2 (m3 (m4 (m5 b))))) -> m1 (m2 (m3 (m4 (m5 b))))
+ DeepControl.Monad: (>>->-==) :: (Monad m1, Monad m2, Commutative m2, Monad m3, Commutative m3, Monad m4, Commutative m4, Monad m5, Commutative m5) => m1 (m2 (m4 a)) -> (a -> m1 (m2 (m3 (m4 (m5 b))))) -> m1 (m2 (m3 (m4 (m5 b))))
- DeepControl.Monad: (>>->-~) :: (Monad m1, Monad2 m2, Monad3 m3, Monad4 m4, Monad5 m5) => m1 (m2 (m4 a)) -> m1 (m2 (m3 (m4 (m5 b)))) -> m1 (m2 (m3 (m4 (m5 b))))
+ DeepControl.Monad: (>>->-~) :: (Monad m1, Monad m2, Commutative m2, Monad m3, Commutative m3, Monad m4, Commutative m4, Monad m5, Commutative m5) => m1 (m2 (m4 a)) -> m1 (m2 (m3 (m4 (m5 b)))) -> m1 (m2 (m3 (m4 (m5 b))))
- DeepControl.Monad: (>>->==) :: (Monad m1, Monad2 m2, Monad3 m3, Monad4 m4) => m1 (m2 (m4 a)) -> (a -> m1 (m2 (m3 (m4 b)))) -> m1 (m2 (m3 (m4 b)))
+ DeepControl.Monad: (>>->==) :: (Monad m1, Monad m2, Commutative m2, Monad m3, Commutative m3, Monad m4, Commutative m4) => m1 (m2 (m4 a)) -> (a -> m1 (m2 (m3 (m4 b)))) -> m1 (m2 (m3 (m4 b)))
- DeepControl.Monad: (>>->>==) :: (Monad m1, Monad2 m2, Monad3 m3, Monad4 m4, Monad5 m5) => m1 (m2 (m4 (m5 a))) -> (a -> m1 (m2 (m3 (m4 (m5 b))))) -> m1 (m2 (m3 (m4 (m5 b))))
+ DeepControl.Monad: (>>->>==) :: (Monad m1, Monad m2, Commutative m2, Monad m3, Commutative m3, Monad m4, Commutative m4, Monad m5, Commutative m5) => m1 (m2 (m4 (m5 a))) -> (a -> m1 (m2 (m3 (m4 (m5 b))))) -> m1 (m2 (m3 (m4 (m5 b))))
- DeepControl.Monad: (>>->>~) :: (Monad m1, Monad2 m2, Monad3 m3, Monad4 m4, Monad5 m5) => m1 (m2 (m4 (m5 a))) -> m1 (m2 (m3 (m4 (m5 b)))) -> m1 (m2 (m3 (m4 (m5 b))))
+ DeepControl.Monad: (>>->>~) :: (Monad m1, Monad m2, Commutative m2, Monad m3, Commutative m3, Monad m4, Commutative m4, Monad m5, Commutative m5) => m1 (m2 (m4 (m5 a))) -> m1 (m2 (m3 (m4 (m5 b)))) -> m1 (m2 (m3 (m4 (m5 b))))
- DeepControl.Monad: (>>->~) :: (Monad m1, Monad2 m2, Monad3 m3, Monad4 m4) => m1 (m2 (m4 a)) -> m1 (m2 (m3 (m4 b))) -> m1 (m2 (m3 (m4 b)))
+ DeepControl.Monad: (>>->~) :: (Monad m1, Monad m2, Commutative m2, Monad m3, Commutative m3, Monad m4, Commutative m4) => m1 (m2 (m4 a)) -> m1 (m2 (m3 (m4 b))) -> m1 (m2 (m3 (m4 b)))
- DeepControl.Monad: (>>-~) :: (Monad m1, Monad2 m2, Monad3 m3) => m1 (m2 a) -> m1 (m2 (m3 b)) -> m1 (m2 (m3 b))
+ DeepControl.Monad: (>>-~) :: (Monad m1, Monad m2, Commutative m2, Monad m3, Commutative m3) => m1 (m2 a) -> m1 (m2 (m3 b)) -> m1 (m2 (m3 b))
- DeepControl.Monad: (>>==) :: (Monad2 m2, Monad m1) => m1 (m2 a) -> (a -> m1 (m2 b)) -> m1 (m2 b)
+ DeepControl.Monad: (>>==) :: (Monad m1, Monad m2, Commutative m2) => m1 (m2 a) -> (a -> m1 (m2 b)) -> m1 (m2 b)
- DeepControl.Monad: (>>>--==) :: (Monad m1, Monad2 m2, Monad3 m3, Monad4 m4, Monad5 m5) => m1 (m2 (m3 a)) -> (a -> m1 (m2 (m3 (m4 (m5 b))))) -> m1 (m2 (m3 (m4 (m5 b))))
+ DeepControl.Monad: (>>>--==) :: (Monad m1, Monad m2, Commutative m2, Monad m3, Commutative m3, Monad m4, Commutative m4, Monad m5, Commutative m5) => m1 (m2 (m3 a)) -> (a -> m1 (m2 (m3 (m4 (m5 b))))) -> m1 (m2 (m3 (m4 (m5 b))))
- DeepControl.Monad: (>>>--~) :: (Monad m1, Monad2 m2, Monad3 m3, Monad4 m4, Monad5 m5) => m1 (m2 (m3 a)) -> m1 (m2 (m3 (m4 (m5 b)))) -> m1 (m2 (m3 (m4 (m5 b))))
+ DeepControl.Monad: (>>>--~) :: (Monad m1, Monad m2, Commutative m2, Monad m3, Commutative m3, Monad m4, Commutative m4, Monad m5, Commutative m5) => m1 (m2 (m3 a)) -> m1 (m2 (m3 (m4 (m5 b)))) -> m1 (m2 (m3 (m4 (m5 b))))
- DeepControl.Monad: (>>>-==) :: (Monad m1, Monad2 m2, Monad3 m3, Monad4 m4) => m1 (m2 (m3 a)) -> (a -> m1 (m2 (m3 (m4 b)))) -> m1 (m2 (m3 (m4 b)))
+ DeepControl.Monad: (>>>-==) :: (Monad m1, Monad m2, Commutative m2, Monad m3, Commutative m3, Monad m4, Commutative m4) => m1 (m2 (m3 a)) -> (a -> m1 (m2 (m3 (m4 b)))) -> m1 (m2 (m3 (m4 b)))
- DeepControl.Monad: (>>>->==) :: (Monad m1, Monad2 m2, Monad3 m3, Monad4 m4, Monad5 m5) => m1 (m2 (m3 (m5 a))) -> (a -> m1 (m2 (m3 (m4 (m5 b))))) -> m1 (m2 (m3 (m4 (m5 b))))
+ DeepControl.Monad: (>>>->==) :: (Monad m1, Monad m2, Commutative m2, Monad m3, Commutative m3, Monad m4, Commutative m4, Monad m5, Commutative m5) => m1 (m2 (m3 (m5 a))) -> (a -> m1 (m2 (m3 (m4 (m5 b))))) -> m1 (m2 (m3 (m4 (m5 b))))
- DeepControl.Monad: (>>>->~) :: (Monad m1, Monad2 m2, Monad3 m3, Monad4 m4, Monad5 m5) => m1 (m2 (m3 (m5 a))) -> m1 (m2 (m3 (m4 (m5 b)))) -> m1 (m2 (m3 (m4 (m5 b))))
+ DeepControl.Monad: (>>>->~) :: (Monad m1, Monad m2, Commutative m2, Monad m3, Commutative m3, Monad m4, Commutative m4, Monad m5, Commutative m5) => m1 (m2 (m3 (m5 a))) -> m1 (m2 (m3 (m4 (m5 b)))) -> m1 (m2 (m3 (m4 (m5 b))))
- DeepControl.Monad: (>>>-~) :: (Monad m1, Monad2 m2, Monad3 m3, Monad4 m4) => m1 (m2 (m3 a)) -> m1 (m2 (m3 (m4 b))) -> m1 (m2 (m3 (m4 b)))
+ DeepControl.Monad: (>>>-~) :: (Monad m1, Monad m2, Commutative m2, Monad m3, Commutative m3, Monad m4, Commutative m4) => m1 (m2 (m3 a)) -> m1 (m2 (m3 (m4 b))) -> m1 (m2 (m3 (m4 b)))
- DeepControl.Monad: (>>>==) :: (Monad3 m3, Monad m1, Monad2 m2) => m1 (m2 (m3 a)) -> (a -> m1 (m2 (m3 b))) -> m1 (m2 (m3 b))
+ DeepControl.Monad: (>>>==) :: (Monad m1, Monad m2, Commutative m2, Monad m3, Commutative m3) => m1 (m2 (m3 a)) -> (a -> m1 (m2 (m3 b))) -> m1 (m2 (m3 b))
- DeepControl.Monad: (>>>>-==) :: (Monad m1, Monad2 m2, Monad3 m3, Monad4 m4, Monad5 m5) => m1 (m2 (m3 (m4 a))) -> (a -> m1 (m2 (m3 (m4 (m5 b))))) -> m1 (m2 (m3 (m4 (m5 b))))
+ DeepControl.Monad: (>>>>-==) :: (Monad m1, Monad m2, Commutative m2, Monad m3, Commutative m3, Monad m4, Commutative m4, Monad m5, Commutative m5) => m1 (m2 (m3 (m4 a))) -> (a -> m1 (m2 (m3 (m4 (m5 b))))) -> m1 (m2 (m3 (m4 (m5 b))))
- DeepControl.Monad: (>>>>-~) :: (Monad m1, Monad2 m2, Monad3 m3, Monad4 m4, Monad5 m5) => m1 (m2 (m3 (m4 a))) -> m1 (m2 (m3 (m4 (m5 b)))) -> m1 (m2 (m3 (m4 (m5 b))))
+ DeepControl.Monad: (>>>>-~) :: (Monad m1, Monad m2, Commutative m2, Monad m3, Commutative m3, Monad m4, Commutative m4, Monad m5, Commutative m5) => m1 (m2 (m3 (m4 a))) -> m1 (m2 (m3 (m4 (m5 b)))) -> m1 (m2 (m3 (m4 (m5 b))))
- DeepControl.Monad: (>>>>==) :: (Monad4 m4, Monad m1, Monad2 m2, Monad3 m3) => m1 (m2 (m3 (m4 a))) -> (a -> m1 (m2 (m3 (m4 b)))) -> m1 (m2 (m3 (m4 b)))
+ DeepControl.Monad: (>>>>==) :: (Monad m1, Monad m2, Commutative m2, Monad m3, Commutative m3, Monad m4, Commutative m4) => m1 (m2 (m3 (m4 a))) -> (a -> m1 (m2 (m3 (m4 b)))) -> m1 (m2 (m3 (m4 b)))
- DeepControl.Monad: (>>>>>==) :: (Monad5 m5, Monad m1, Monad2 m2, Monad3 m3, Monad4 m4) => m1 (m2 (m3 (m4 (m5 a)))) -> (a -> m1 (m2 (m3 (m4 (m5 b))))) -> m1 (m2 (m3 (m4 (m5 b))))
+ DeepControl.Monad: (>>>>>==) :: (Monad m1, Monad m2, Commutative m2, Monad m3, Commutative m3, Monad m4, Commutative m4, Monad m5, Commutative m5) => m1 (m2 (m3 (m4 (m5 a)))) -> (a -> m1 (m2 (m3 (m4 (m5 b))))) -> m1 (m2 (m3 (m4 (m5 b))))
- DeepControl.Monad: (>>>>>~) :: (Monad m1, Monad2 m2, Monad3 m3, Monad4 m4, Monad5 m5) => m1 (m2 (m3 (m4 (m5 a)))) -> m1 (m2 (m3 (m4 (m5 b)))) -> m1 (m2 (m3 (m4 (m5 b))))
+ DeepControl.Monad: (>>>>>~) :: (Monad m1, Monad m2, Commutative m2, Monad m3, Commutative m3, Monad m4, Commutative m4, Monad m5, Commutative m5) => m1 (m2 (m3 (m4 (m5 a)))) -> m1 (m2 (m3 (m4 (m5 b)))) -> m1 (m2 (m3 (m4 (m5 b))))
- DeepControl.Monad: (>>>>~) :: (Monad m1, Monad2 m2, Monad3 m3, Monad4 m4) => m1 (m2 (m3 (m4 a))) -> m1 (m2 (m3 (m4 b))) -> m1 (m2 (m3 (m4 b)))
+ DeepControl.Monad: (>>>>~) :: (Monad m1, Monad m2, Commutative m2, Monad m3, Commutative m3, Monad m4, Commutative m4) => m1 (m2 (m3 (m4 a))) -> m1 (m2 (m3 (m4 b))) -> m1 (m2 (m3 (m4 b)))
- DeepControl.Monad: (>>>~) :: (Monad m1, Monad2 m2, Monad3 m3) => m1 (m2 (m3 a)) -> m1 (m2 (m3 b)) -> m1 (m2 (m3 b))
+ DeepControl.Monad: (>>>~) :: (Monad m1, Monad m2, Commutative m2, Monad m3, Commutative m3) => m1 (m2 (m3 a)) -> m1 (m2 (m3 b)) -> m1 (m2 (m3 b))
- DeepControl.Monad: (>>~) :: (Monad m1, Monad2 m2) => m1 (m2 a) -> m1 (m2 b) -> m1 (m2 b)
+ DeepControl.Monad: (>>~) :: (Monad m1, Monad m2, Commutative m2) => m1 (m2 a) -> m1 (m2 b) -> m1 (m2 b)
- DeepControl.Monad.Trans: (|****-|) :: (Monad m1, Monad2 m2, Monad3 m3, Monad4 m4, Monad5 m5, MonadTransCover5 t5) => (T____ t5) m5 a -> t5 m1 m2 m3 m4 m5 a
+ DeepControl.Monad.Trans: (|****-|) :: (Monad m1, Monad m2, Monad m3, Monad m4, Monad m5, MonadTransCover5 t5) => (T____ t5) m5 a -> t5 m1 m2 m3 m4 m5 a
- DeepControl.Monad.Trans: (|****|) :: (Monad m1, Monad2 m2, Monad3 m3, Monad4 m4, MonadTransCover4 t4) => (M___ t4) a -> t4 m1 m2 m3 m4 a
+ DeepControl.Monad.Trans: (|****|) :: (Monad m1, Monad m2, Monad m3, Monad m4, MonadTransCover4 t4) => (M___ t4) a -> t4 m1 m2 m3 m4 a
- DeepControl.Monad.Trans: (|***-*|) :: (Monad m1, Monad2 m2, Monad3 m3, Monad4 m4, Monad5 m5, MonadTransCover5 t5) => (T____ t5) m4 a -> t5 m1 m2 m3 m4 m5 a
+ DeepControl.Monad.Trans: (|***-*|) :: (Monad m1, Monad m2, Monad m3, Monad m4, Monad m5, MonadTransCover5 t5) => (T____ t5) m4 a -> t5 m1 m2 m3 m4 m5 a
- DeepControl.Monad.Trans: (|***--|) :: (Monad m1, Monad2 m2, Monad3 m3, Monad4 m4, Monad5 m5, MonadTransCover5 t5) => (T2___ t5) m4 m5 a -> t5 m1 m2 m3 m4 m5 a
+ DeepControl.Monad.Trans: (|***--|) :: (Monad m1, Monad m2, Monad m3, Monad m4, Monad m5, MonadTransCover5 t5) => (T2___ t5) m4 m5 a -> t5 m1 m2 m3 m4 m5 a
- DeepControl.Monad.Trans: (|***-|) :: (Monad m1, Monad2 m2, Monad3 m3, Monad4 m4, MonadTransCover4 t4) => (T___ t4) m4 a -> t4 m1 m2 m3 m4 a
+ DeepControl.Monad.Trans: (|***-|) :: (Monad m1, Monad m2, Monad m3, Monad m4, MonadTransCover4 t4) => (T___ t4) m4 a -> t4 m1 m2 m3 m4 a
- DeepControl.Monad.Trans: (|***|) :: (Monad m1, Monad2 m2, Monad3 m3, MonadTransCover3 t3) => (M__ t3) a -> t3 m1 m2 m3 a
+ DeepControl.Monad.Trans: (|***|) :: (Monad m1, Monad m2, Monad m3, MonadTransCover3 t3) => (M__ t3) a -> t3 m1 m2 m3 a
- DeepControl.Monad.Trans: (|**-**|) :: (Monad m1, Monad2 m2, Monad3 m3, Monad4 m4, Monad5 m5, MonadTransCover5 t5) => (T____ t5) m3 a -> t5 m1 m2 m3 m4 m5 a
+ DeepControl.Monad.Trans: (|**-**|) :: (Monad m1, Monad m2, Monad m3, Monad m4, Monad m5, MonadTransCover5 t5) => (T____ t5) m3 a -> t5 m1 m2 m3 m4 m5 a
- DeepControl.Monad.Trans: (|**-*-|) :: (Monad m1, Monad2 m2, Monad3 m3, Monad4 m4, Monad5 m5, MonadTransCover5 t5) => (T2___ t5) m3 m5 a -> t5 m1 m2 m3 m4 m5 a
+ DeepControl.Monad.Trans: (|**-*-|) :: (Monad m1, Monad m2, Monad m3, Monad m4, Monad m5, MonadTransCover5 t5) => (T2___ t5) m3 m5 a -> t5 m1 m2 m3 m4 m5 a
- DeepControl.Monad.Trans: (|**-*|) :: (Monad m1, Monad2 m2, Monad3 m3, Monad4 m4, MonadTransCover4 t4) => (T___ t4) m3 a -> t4 m1 m2 m3 m4 a
+ DeepControl.Monad.Trans: (|**-*|) :: (Monad m1, Monad m2, Monad m3, Monad m4, MonadTransCover4 t4) => (T___ t4) m3 a -> t4 m1 m2 m3 m4 a
- DeepControl.Monad.Trans: (|**--*|) :: (Monad m1, Monad2 m2, Monad3 m3, Monad4 m4, Monad5 m5, MonadTransCover5 t5) => (T2___ t5) m3 m4 a -> t5 m1 m2 m3 m4 m5 a
+ DeepControl.Monad.Trans: (|**--*|) :: (Monad m1, Monad m2, Monad m3, Monad m4, Monad m5, MonadTransCover5 t5) => (T2___ t5) m3 m4 a -> t5 m1 m2 m3 m4 m5 a
- DeepControl.Monad.Trans: (|**---|) :: (Monad m1, Monad2 m2, Monad3 m3, Monad4 m4, Monad5 m5, MonadTransCover5 t5) => (T3___ t5) m3 m4 m5 a -> t5 m1 m2 m3 m4 m5 a
+ DeepControl.Monad.Trans: (|**---|) :: (Monad m1, Monad m2, Monad m3, Monad m4, Monad m5, MonadTransCover5 t5) => (T3___ t5) m3 m4 m5 a -> t5 m1 m2 m3 m4 m5 a
- DeepControl.Monad.Trans: (|**--|) :: (Monad m1, Monad2 m2, Monad3 m3, Monad4 m4, MonadTransCover4 t4) => (T2__ t4) m3 m4 a -> t4 m1 m2 m3 m4 a
+ DeepControl.Monad.Trans: (|**--|) :: (Monad m1, Monad m2, Monad m3, Monad m4, MonadTransCover4 t4) => (T2__ t4) m3 m4 a -> t4 m1 m2 m3 m4 a
- DeepControl.Monad.Trans: (|**-|) :: (Monad m1, Monad2 m2, Monad3 m3, MonadTransCover3 t3) => (T__ t3) m3 a -> t3 m1 m2 m3 a
+ DeepControl.Monad.Trans: (|**-|) :: (Monad m1, Monad m2, Monad m3, MonadTransCover3 t3) => (T__ t3) m3 a -> t3 m1 m2 m3 a
- DeepControl.Monad.Trans: (|**|) :: (Monad m1, Monad2 m2, MonadTransCover2 t2) => (M_ t2) a -> t2 m1 m2 a
+ DeepControl.Monad.Trans: (|**|) :: (Monad m1, Monad m2, MonadTransCover2 t2) => (M_ t2) a -> t2 m1 m2 a
- DeepControl.Monad.Trans: (|*-***|) :: (Monad m1, Monad2 m2, Monad3 m3, Monad4 m4, Monad5 m5, MonadTransCover5 t5) => (T____ t5) m2 a -> t5 m1 m2 m3 m4 m5 a
+ DeepControl.Monad.Trans: (|*-***|) :: (Monad m1, Monad m2, Monad m3, Monad m4, Monad m5, MonadTransCover5 t5) => (T____ t5) m2 a -> t5 m1 m2 m3 m4 m5 a
- DeepControl.Monad.Trans: (|*-**|) :: (Monad m1, Monad2 m2, Monad3 m3, Monad4 m4, MonadTransCover4 t4) => (T___ t4) m2 a -> t4 m1 m2 m3 m4 a
+ DeepControl.Monad.Trans: (|*-**|) :: (Monad m1, Monad m2, Monad m3, Monad m4, MonadTransCover4 t4) => (T___ t4) m2 a -> t4 m1 m2 m3 m4 a
- DeepControl.Monad.Trans: (|*-*-*|) :: (Monad m1, Monad2 m2, Monad3 m3, Monad4 m4, Monad5 m5, MonadTransCover5 t5) => (T2___ t5) m2 m4 a -> t5 m1 m2 m3 m4 m5 a
+ DeepControl.Monad.Trans: (|*-*-*|) :: (Monad m1, Monad m2, Monad m3, Monad m4, Monad m5, MonadTransCover5 t5) => (T2___ t5) m2 m4 a -> t5 m1 m2 m3 m4 m5 a
- DeepControl.Monad.Trans: (|*-*--|) :: (Monad m1, Monad2 m2, Monad3 m3, Monad4 m4, Monad5 m5, MonadTransCover5 t5) => (T3___ t5) m2 m4 m5 a -> t5 m1 m2 m3 m4 m5 a
+ DeepControl.Monad.Trans: (|*-*--|) :: (Monad m1, Monad m2, Monad m3, Monad m4, Monad m5, MonadTransCover5 t5) => (T3___ t5) m2 m4 m5 a -> t5 m1 m2 m3 m4 m5 a
- DeepControl.Monad.Trans: (|*-*-|) :: (Monad m1, Monad2 m2, Monad3 m3, Monad4 m4, MonadTransCover4 t4) => (T2__ t4) m2 m4 a -> t4 m1 m2 m3 m4 a
+ DeepControl.Monad.Trans: (|*-*-|) :: (Monad m1, Monad m2, Monad m3, Monad m4, MonadTransCover4 t4) => (T2__ t4) m2 m4 a -> t4 m1 m2 m3 m4 a
- DeepControl.Monad.Trans: (|*-*|) :: (Monad m1, Monad2 m2, Monad3 m3, MonadTransCover3 t3) => (T__ t3) m2 a -> t3 m1 m2 m3 a
+ DeepControl.Monad.Trans: (|*-*|) :: (Monad m1, Monad m2, Monad m3, MonadTransCover3 t3) => (T__ t3) m2 a -> t3 m1 m2 m3 a
- DeepControl.Monad.Trans: (|*--**|) :: (Monad m1, Monad2 m2, Monad3 m3, Monad4 m4, Monad5 m5, MonadTransCover5 t5) => (T2___ t5) m2 m3 a -> t5 m1 m2 m3 m4 m5 a
+ DeepControl.Monad.Trans: (|*--**|) :: (Monad m1, Monad m2, Monad m3, Monad m4, Monad m5, MonadTransCover5 t5) => (T2___ t5) m2 m3 a -> t5 m1 m2 m3 m4 m5 a
- DeepControl.Monad.Trans: (|*--*-|) :: (Monad m1, Monad2 m2, Monad3 m3, Monad4 m4, Monad5 m5, MonadTransCover5 t5) => (T3___ t5) m2 m3 m5 a -> t5 m1 m2 m3 m4 m5 a
+ DeepControl.Monad.Trans: (|*--*-|) :: (Monad m1, Monad m2, Monad m3, Monad m4, Monad m5, MonadTransCover5 t5) => (T3___ t5) m2 m3 m5 a -> t5 m1 m2 m3 m4 m5 a
- DeepControl.Monad.Trans: (|*--*|) :: (Monad m1, Monad2 m2, Monad3 m3, Monad4 m4, MonadTransCover4 t4) => (T2__ t4) m2 m3 a -> t4 m1 m2 m3 m4 a
+ DeepControl.Monad.Trans: (|*--*|) :: (Monad m1, Monad m2, Monad m3, Monad m4, MonadTransCover4 t4) => (T2__ t4) m2 m3 a -> t4 m1 m2 m3 m4 a
- DeepControl.Monad.Trans: (|*---*|) :: (Monad m1, Monad2 m2, Monad3 m3, Monad4 m4, Monad5 m5, MonadTransCover5 t5) => (T3___ t5) m2 m3 m4 a -> t5 m1 m2 m3 m4 m5 a
+ DeepControl.Monad.Trans: (|*---*|) :: (Monad m1, Monad m2, Monad m3, Monad m4, Monad m5, MonadTransCover5 t5) => (T3___ t5) m2 m3 m4 a -> t5 m1 m2 m3 m4 m5 a
- DeepControl.Monad.Trans: (|*----|) :: (MonadTransCover5 t5, Monad m1, Monad2 m2, Monad3 m3, Monad4 m4, Monad5 m5) => (Trans5Down t5) m2 m3 m4 m5 a -> t5 m1 m2 m3 m4 m5 a
+ DeepControl.Monad.Trans: (|*----|) :: (MonadTransCover5 t5, Monad m1, Monad m2, Monad m3, Monad m4, Monad m5) => (Trans5Down t5) m2 m3 m4 m5 a -> t5 m1 m2 m3 m4 m5 a
- DeepControl.Monad.Trans: (|*---|) :: (MonadTransCover4 t4, Monad m1, Monad2 m2, Monad3 m3, Monad4 m4) => (Trans4Down t4) m2 m3 m4 a -> t4 m1 m2 m3 m4 a
+ DeepControl.Monad.Trans: (|*---|) :: (MonadTransCover4 t4, Monad m1, Monad m2, Monad m3, Monad m4) => (Trans4Down t4) m2 m3 m4 a -> t4 m1 m2 m3 m4 a
- DeepControl.Monad.Trans: (|*--|) :: (MonadTransCover3 t3, Monad m1, Monad2 m2, Monad3 m3) => (Trans3Down t3) m2 m3 a -> t3 m1 m2 m3 a
+ DeepControl.Monad.Trans: (|*--|) :: (MonadTransCover3 t3, Monad m1, Monad m2, Monad m3) => (Trans3Down t3) m2 m3 a -> t3 m1 m2 m3 a
- DeepControl.Monad.Trans: (|*-|) :: (MonadTransCover2 t2, Monad m1, Monad2 m2) => (Trans2Down t2) m2 a -> t2 m1 m2 a
+ DeepControl.Monad.Trans: (|*-|) :: (MonadTransCover2 t2, Monad m1, Monad m2) => (Trans2Down t2) m2 a -> t2 m1 m2 a
- DeepControl.Monad.Trans: (|-****|) :: (Monad m1, Monad2 m2, Monad3 m3, Monad4 m4, Monad5 m5, MonadTransCover5 t5) => (T____ t5) m1 a -> t5 m1 m2 m3 m4 m5 a
+ DeepControl.Monad.Trans: (|-****|) :: (Monad m1, Monad m2, Monad m3, Monad m4, Monad m5, MonadTransCover5 t5) => (T____ t5) m1 a -> t5 m1 m2 m3 m4 m5 a
- DeepControl.Monad.Trans: (|-***|) :: (Monad m1, Monad2 m2, Monad3 m3, Monad4 m4, MonadTransCover4 t4) => (T___ t4) m1 a -> t4 m1 m2 m3 m4 a
+ DeepControl.Monad.Trans: (|-***|) :: (Monad m1, Monad m2, Monad m3, Monad m4, MonadTransCover4 t4) => (T___ t4) m1 a -> t4 m1 m2 m3 m4 a
- DeepControl.Monad.Trans: (|-**-|) :: (Monad m1, Monad2 m2, Monad3 m3, Monad4 m4, MonadTransCover4 t4) => (T2__ t4) m1 m4 a -> t4 m1 m2 m3 m4 a
+ DeepControl.Monad.Trans: (|-**-|) :: (Monad m1, Monad m2, Monad m3, Monad m4, MonadTransCover4 t4) => (T2__ t4) m1 m4 a -> t4 m1 m2 m3 m4 a
- DeepControl.Monad.Trans: (|-**|) :: (Monad m1, Monad2 m2, Monad3 m3, MonadTransCover3 t3) => (T__ t3) m1 a -> t3 m1 m2 m3 a
+ DeepControl.Monad.Trans: (|-**|) :: (Monad m1, Monad m2, Monad m3, MonadTransCover3 t3) => (T__ t3) m1 a -> t3 m1 m2 m3 a
- DeepControl.Monad.Trans: (|-*-**|) :: (Monad m1, Monad2 m2, Monad3 m3, Monad4 m4, Monad5 m5, MonadTransCover5 t5) => (T2___ t5) m1 m3 a -> t5 m1 m2 m3 m4 m5 a
+ DeepControl.Monad.Trans: (|-*-**|) :: (Monad m1, Monad m2, Monad m3, Monad m4, Monad m5, MonadTransCover5 t5) => (T2___ t5) m1 m3 a -> t5 m1 m2 m3 m4 m5 a
- DeepControl.Monad.Trans: (|-*-*|) :: (Monad m1, Monad2 m2, Monad3 m3, Monad4 m4, MonadTransCover4 t4) => (T2__ t4) m1 m3 a -> t4 m1 m2 m3 m4 a
+ DeepControl.Monad.Trans: (|-*-*|) :: (Monad m1, Monad m2, Monad m3, Monad m4, MonadTransCover4 t4) => (T2__ t4) m1 m3 a -> t4 m1 m2 m3 m4 a
- DeepControl.Monad.Trans: (|-*--*|) :: (Monad m1, Monad2 m2, Monad3 m3, Monad4 m4, Monad5 m5, MonadTransCover5 t5) => (T3___ t5) m1 m3 m4 a -> t5 m1 m2 m3 m4 m5 a
+ DeepControl.Monad.Trans: (|-*--*|) :: (Monad m1, Monad m2, Monad m3, Monad m4, Monad m5, MonadTransCover5 t5) => (T3___ t5) m1 m3 m4 a -> t5 m1 m2 m3 m4 m5 a
- DeepControl.Monad.Trans: (|-*---|) :: (MonadTransCover5 t5, Monad m1, Monad2 m2, Monad3 m3, Monad4 m4, Monad5 m5) => (Trans5Down t5) m1 m3 m4 m5 a -> t5 m1 m2 m3 m4 m5 a
+ DeepControl.Monad.Trans: (|-*---|) :: (MonadTransCover5 t5, Monad m1, Monad m2, Monad m3, Monad m4, Monad m5) => (Trans5Down t5) m1 m3 m4 m5 a -> t5 m1 m2 m3 m4 m5 a
- DeepControl.Monad.Trans: (|-*--|) :: (MonadTransCover4 t4, Monad m1, Monad2 m2, Monad3 m3, Monad4 m4) => (Trans4Down t4) m1 m3 m4 a -> t4 m1 m2 m3 m4 a
+ DeepControl.Monad.Trans: (|-*--|) :: (MonadTransCover4 t4, Monad m1, Monad m2, Monad m3, Monad m4) => (Trans4Down t4) m1 m3 m4 a -> t4 m1 m2 m3 m4 a
- DeepControl.Monad.Trans: (|-*-|) :: (MonadTransCover3 t3, Monad m1, Monad2 m2, Monad3 m3) => (Trans3Down t3) m1 m3 a -> t3 m1 m2 m3 a
+ DeepControl.Monad.Trans: (|-*-|) :: (MonadTransCover3 t3, Monad m1, Monad m2, Monad m3) => (Trans3Down t3) m1 m3 a -> t3 m1 m2 m3 a
- DeepControl.Monad.Trans: (|-*|) :: (MonadTransCover2 t2, Monad m1, Monad2 m2) => (Trans2Down t2) m1 a -> t2 m1 m2 a
+ DeepControl.Monad.Trans: (|-*|) :: (MonadTransCover2 t2, Monad m1, Monad m2) => (Trans2Down t2) m1 a -> t2 m1 m2 a
- DeepControl.Monad.Trans: (|--***|) :: (Monad m1, Monad2 m2, Monad3 m3, Monad4 m4, Monad5 m5, MonadTransCover5 t5) => (T2___ t5) m1 m2 a -> t5 m1 m2 m3 m4 m5 a
+ DeepControl.Monad.Trans: (|--***|) :: (Monad m1, Monad m2, Monad m3, Monad m4, Monad m5, MonadTransCover5 t5) => (T2___ t5) m1 m2 a -> t5 m1 m2 m3 m4 m5 a
- DeepControl.Monad.Trans: (|--**|) :: (Monad m1, Monad2 m2, Monad3 m3, Monad4 m4, MonadTransCover4 t4) => (T2__ t4) m1 m2 a -> t4 m1 m2 m3 m4 a
+ DeepControl.Monad.Trans: (|--**|) :: (Monad m1, Monad m2, Monad m3, Monad m4, MonadTransCover4 t4) => (T2__ t4) m1 m2 a -> t4 m1 m2 m3 m4 a
- DeepControl.Monad.Trans: (|--*-*|) :: (Monad m1, Monad2 m2, Monad3 m3, Monad4 m4, Monad5 m5, MonadTransCover5 t5) => (T3___ t5) m1 m2 m4 a -> t5 m1 m2 m3 m4 m5 a
+ DeepControl.Monad.Trans: (|--*-*|) :: (Monad m1, Monad m2, Monad m3, Monad m4, Monad m5, MonadTransCover5 t5) => (T3___ t5) m1 m2 m4 a -> t5 m1 m2 m3 m4 m5 a
- DeepControl.Monad.Trans: (|--*--|) :: (MonadTransCover5 t5, Monad m1, Monad2 m2, Monad3 m3, Monad4 m4, Monad5 m5) => (Trans5Down t5) m1 m2 m4 m5 a -> t5 m1 m2 m3 m4 m5 a
+ DeepControl.Monad.Trans: (|--*--|) :: (MonadTransCover5 t5, Monad m1, Monad m2, Monad m3, Monad m4, Monad m5) => (Trans5Down t5) m1 m2 m4 m5 a -> t5 m1 m2 m3 m4 m5 a
- DeepControl.Monad.Trans: (|--*-|) :: (MonadTransCover4 t4, Monad m1, Monad2 m2, Monad3 m3, Monad4 m4) => (Trans4Down t4) m1 m2 m4 a -> t4 m1 m2 m3 m4 a
+ DeepControl.Monad.Trans: (|--*-|) :: (MonadTransCover4 t4, Monad m1, Monad m2, Monad m3, Monad m4) => (Trans4Down t4) m1 m2 m4 a -> t4 m1 m2 m3 m4 a
- DeepControl.Monad.Trans: (|--*|) :: (MonadTransCover3 t3, Monad m1, Monad2 m2, Monad3 m3) => (Trans3Down t3) m1 m2 a -> t3 m1 m2 m3 a
+ DeepControl.Monad.Trans: (|--*|) :: (MonadTransCover3 t3, Monad m1, Monad m2, Monad m3) => (Trans3Down t3) m1 m2 a -> t3 m1 m2 m3 a
- DeepControl.Monad.Trans: (|---**|) :: (Monad m1, Monad2 m2, Monad3 m3, Monad4 m4, Monad5 m5, MonadTransCover5 t5) => (T3___ t5) m1 m2 m3 a -> t5 m1 m2 m3 m4 m5 a
+ DeepControl.Monad.Trans: (|---**|) :: (Monad m1, Monad m2, Monad m3, Monad m4, Monad m5, MonadTransCover5 t5) => (T3___ t5) m1 m2 m3 a -> t5 m1 m2 m3 m4 m5 a
- DeepControl.Monad.Trans: (|---*-|) :: (MonadTransCover5 t5, Monad m1, Monad2 m2, Monad3 m3, Monad4 m4, Monad5 m5) => (Trans5Down t5) m1 m2 m3 m5 a -> t5 m1 m2 m3 m4 m5 a
+ DeepControl.Monad.Trans: (|---*-|) :: (MonadTransCover5 t5, Monad m1, Monad m2, Monad m3, Monad m4, Monad m5) => (Trans5Down t5) m1 m2 m3 m5 a -> t5 m1 m2 m3 m4 m5 a
- DeepControl.Monad.Trans: (|---*|) :: (MonadTransCover4 t4, Monad m1, Monad2 m2, Monad3 m3, Monad4 m4) => (Trans4Down t4) m1 m2 m3 a -> t4 m1 m2 m3 m4 a
+ DeepControl.Monad.Trans: (|---*|) :: (MonadTransCover4 t4, Monad m1, Monad m2, Monad m3, Monad m4) => (Trans4Down t4) m1 m2 m3 a -> t4 m1 m2 m3 m4 a
- DeepControl.Monad.Trans: (|----*|) :: (MonadTransCover5 t5, Monad m1, Monad2 m2, Monad3 m3, Monad4 m4, Monad5 m5) => (Trans5Down t5) m1 m2 m3 m4 a -> t5 m1 m2 m3 m4 m5 a
+ DeepControl.Monad.Trans: (|----*|) :: (MonadTransCover5 t5, Monad m1, Monad m2, Monad m3, Monad m4, Monad m5) => (Trans5Down t5) m1 m2 m3 m4 a -> t5 m1 m2 m3 m4 m5 a
- DeepControl.Monad.Trans: class (MonadTrans (Trans2Down t2), MonadTrans2 t2) => MonadTrans2Down t2 where type Trans2Down t2 :: (* -> *) -> * -> * where {
+ DeepControl.Monad.Trans: class (MonadTrans (Trans2Down t2), MonadTrans2 t2) => MonadTrans2Down t2 where type family Trans2Down t2 :: (* -> *) -> * -> *
- DeepControl.Monad.Trans: class (MonadTrans2 (Trans3Down t3), MonadTrans3 t3) => MonadTrans3Down t3 where type Trans3Down t3 :: (* -> *) -> (* -> *) -> * -> * where {
+ DeepControl.Monad.Trans: class (MonadTrans2 (Trans3Down t3), MonadTrans3 t3) => MonadTrans3Down t3 where type family Trans3Down t3 :: (* -> *) -> (* -> *) -> * -> *
- DeepControl.Monad.Trans: class (MonadTrans3 (Trans4Down t4), MonadTrans4 t4) => MonadTrans4Down t4 where type Trans4Down t4 :: (* -> *) -> (* -> *) -> (* -> *) -> * -> * where {
+ DeepControl.Monad.Trans: class (MonadTrans3 (Trans4Down t4), MonadTrans4 t4) => MonadTrans4Down t4 where type family Trans4Down t4 :: (* -> *) -> (* -> *) -> (* -> *) -> * -> *
- DeepControl.Monad.Trans: class (MonadTrans4 (Trans5Down t5), MonadTrans5 t5) => MonadTrans5Down t5 where type Trans5Down t5 :: (* -> *) -> (* -> *) -> (* -> *) -> (* -> *) -> * -> * where {
+ DeepControl.Monad.Trans: class (MonadTrans4 (Trans5Down t5), MonadTrans5 t5) => MonadTrans5Down t5 where type family Trans5Down t5 :: (* -> *) -> (* -> *) -> (* -> *) -> (* -> *) -> * -> *
- DeepControl.Monad.Trans: class (Monad (TransDown t1), MonadTrans t1) => MonadTransDown t1 where type TransDown t1 :: * -> * where {
+ DeepControl.Monad.Trans: class (Monad (TransDown t1), MonadTrans t1) => MonadTransDown t1 where type family TransDown t1 :: * -> *
- DeepControl.Monad.Trans: liftT2 :: (MonadTrans2 t, Monad m1, Monad2 m2) => m1 (m2 a) -> t m1 m2 a
+ DeepControl.Monad.Trans: liftT2 :: (MonadTrans2 t, Monad m1, Monad m2) => m1 (m2 a) -> t m1 m2 a
- DeepControl.Monad.Trans: liftT3 :: (MonadTrans3 t, Monad m1, Monad2 m2, Monad3 m3) => m1 (m2 (m3 a)) -> t m1 m2 m3 a
+ DeepControl.Monad.Trans: liftT3 :: (MonadTrans3 t, Monad m1, Monad m2, Monad m3) => m1 (m2 (m3 a)) -> t m1 m2 m3 a
- DeepControl.Monad.Trans: liftT4 :: (MonadTrans4 t, Monad m1, Monad2 m2, Monad3 m3, Monad4 m4) => m1 (m2 (m3 (m4 a))) -> t m1 m2 m3 m4 a
+ DeepControl.Monad.Trans: liftT4 :: (MonadTrans4 t, Monad m1, Monad m2, Monad m3, Monad m4) => m1 (m2 (m3 (m4 a))) -> t m1 m2 m3 m4 a
- DeepControl.Monad.Trans: liftT5 :: (MonadTrans5 t, Monad m1, Monad2 m2, Monad3 m3, Monad4 m4, Monad5 m5) => m1 (m2 (m3 (m4 (m5 a)))) -> t m1 m2 m3 m4 m5 a
+ DeepControl.Monad.Trans: liftT5 :: (MonadTrans5 t, Monad m1, Monad m2, Monad m3, Monad m4, Monad m5) => m1 (m2 (m3 (m4 (m5 a)))) -> t m1 m2 m3 m4 m5 a
- DeepControl.Monad.Trans: liftTT2 :: (Monad m1, Monad (t2 m1 m2), Monad2 m2, MonadTrans t1, MonadTrans2 t2) => m1 (m2 a) -> t1 (t2 m1 m2) a
+ DeepControl.Monad.Trans: liftTT2 :: (Monad m1, Monad (t2 m1 m2), Monad m2, MonadTrans t1, MonadTrans2 t2) => m1 (m2 a) -> t1 (t2 m1 m2) a
- DeepControl.Monad.Trans: liftTT3 :: (Monad m1, Monad (t3 m1 m2 m3), Monad2 m2, Monad3 m3, MonadTrans t, MonadTrans3 t3) => m1 (m2 (m3 a)) -> t (t3 m1 m2 m3) a
+ DeepControl.Monad.Trans: liftTT3 :: (Monad m1, Monad (t3 m1 m2 m3), Monad m2, Monad m3, MonadTrans t, MonadTrans3 t3) => m1 (m2 (m3 a)) -> t (t3 m1 m2 m3) a
- DeepControl.Monad.Trans: liftTTT2 :: (Monad m1, Monad (t1 (t2 m1 m2)), Monad (t2 m1 m2), Monad2 m2, MonadTrans t, MonadTrans t1, MonadTrans2 t2) => m1 (m2 a) -> t (t1 (t2 m1 m2)) a
+ DeepControl.Monad.Trans: liftTTT2 :: (Monad m1, Monad (t1 (t2 m1 m2)), Monad (t2 m1 m2), Monad m2, MonadTrans t, MonadTrans t1, MonadTrans2 t2) => m1 (m2 a) -> t (t1 (t2 m1 m2)) a
- DeepControl.Monad.Trans: liftTTT3 :: (Monad m1, Monad (t1 (t3 m1 m2 m3)), Monad (t3 m1 m2 m3), Monad2 m2, Monad3 m3, MonadTrans t, MonadTrans t1, MonadTrans3 t3) => m1 (m2 (m3 a)) -> t (t1 (t3 m1 m2 m3)) a
+ DeepControl.Monad.Trans: liftTTT3 :: (Monad m1, Monad (t1 (t3 m1 m2 m3)), Monad (t3 m1 m2 m3), Monad m2, Monad m3, MonadTrans t, MonadTrans t1, MonadTrans3 t3) => m1 (m2 (m3 a)) -> t (t1 (t3 m1 m2 m3)) a
- DeepControl.Monad.Trans: liftTTTT2 :: (Monad m1, Monad (t1 (t1' (t2 m1 m2))), Monad (t1' (t2 m1 m2)), Monad (t2 m1 m2), Monad2 m2, MonadTrans t, MonadTrans t1, MonadTrans t1', MonadTrans2 t2) => m1 (m2 a) -> t (t1 (t1' (t2 m1 m2))) a
+ DeepControl.Monad.Trans: liftTTTT2 :: (Monad m1, Monad (t1 (t1' (t2 m1 m2))), Monad (t1' (t2 m1 m2)), Monad (t2 m1 m2), Monad m2, MonadTrans t, MonadTrans t1, MonadTrans t1', MonadTrans2 t2) => m1 (m2 a) -> t (t1 (t1' (t2 m1 m2))) a
- DeepControl.Monad.Trans: liftTTTT3 :: (Monad m1, Monad (t1 (t1' (t3 m1 m2 m3))), Monad (t1' (t3 m1 m2 m3)), Monad (t3 m1 m2 m3), Monad2 m2, Monad3 m3, MonadTrans t, MonadTrans t1, MonadTrans t1', MonadTrans3 t3) => m1 (m2 (m3 a)) -> t (t1 (t1' (t3 m1 m2 m3))) a
+ DeepControl.Monad.Trans: liftTTTT3 :: (Monad m1, Monad (t1 (t1' (t3 m1 m2 m3))), Monad (t1' (t3 m1 m2 m3)), Monad (t3 m1 m2 m3), Monad m2, Monad m3, MonadTrans t, MonadTrans t1, MonadTrans t1', MonadTrans3 t3) => m1 (m2 (m3 a)) -> t (t1 (t1' (t3 m1 m2 m3))) a
- DeepControl.Monad.Trans: liftTTTTT2 :: (Monad m1, Monad (t1 (t1' (t1'' (t2 m1 m2)))), Monad (t1' (t1'' (t2 m1 m2))), Monad (t1'' (t2 m1 m2)), Monad (t2 m1 m2), Monad2 m2, MonadTrans t, MonadTrans t1, MonadTrans t1', MonadTrans t1'', MonadTrans2 t2) => m1 (m2 a) -> t (t1 (t1' (t1'' (t2 m1 m2)))) a
+ DeepControl.Monad.Trans: liftTTTTT2 :: (Monad m1, Monad (t1 (t1' (t1'' (t2 m1 m2)))), Monad (t1' (t1'' (t2 m1 m2))), Monad (t1'' (t2 m1 m2)), Monad (t2 m1 m2), Monad m2, MonadTrans t, MonadTrans t1, MonadTrans t1', MonadTrans t1'', MonadTrans2 t2) => m1 (m2 a) -> t (t1 (t1' (t1'' (t2 m1 m2)))) a
- DeepControl.Monad.Trans: liftTTTTT3 :: (Monad m1, Monad (t1 (t1' (t1'' (t3 m1 m2 m3)))), Monad (t1' (t1'' (t3 m1 m2 m3))), Monad (t1'' (t3 m1 m2 m3)), Monad (t3 m1 m2 m3), Monad2 m2, Monad3 m3, MonadTrans t, MonadTrans t1, MonadTrans t1', MonadTrans t1'', MonadTrans3 t3) => m1 (m2 (m3 a)) -> t (t1 (t1' (t1'' (t3 m1 m2 m3)))) a
+ DeepControl.Monad.Trans: liftTTTTT3 :: (Monad m1, Monad (t1 (t1' (t1'' (t3 m1 m2 m3)))), Monad (t1' (t1'' (t3 m1 m2 m3))), Monad (t1'' (t3 m1 m2 m3)), Monad (t3 m1 m2 m3), Monad m2, Monad m3, MonadTrans t, MonadTrans t1, MonadTrans t1', MonadTrans t1'', MonadTrans3 t3) => m1 (m2 (m3 a)) -> t (t1 (t1' (t1'' (t3 m1 m2 m3)))) a
- DeepControl.Monad.Trans.Except: catchError2 :: (MonadError e m2, Commutative m1, Commutative m2) => m1 (m2 a) -> (e -> m1 (m2 a)) -> m1 (m2 a)
+ DeepControl.Monad.Trans.Except: catchError2 :: (MonadError e m2, Commutative m1, Applicative m1, Commutative m2, Applicative m2) => Catch2 e m1 m2 a
- DeepControl.Monad.Trans.Except: catchError3 :: (MonadError e m3, Commutative m1, Commutative m2, Commutative m3) => m1 (m2 (m3 a)) -> (e -> m1 (m2 (m3 a))) -> m1 (m2 (m3 a))
+ DeepControl.Monad.Trans.Except: catchError3 :: (MonadError e m3, Commutative m1, Applicative m1, Commutative m2, Applicative m2, Commutative m3, Applicative m3) => Catch3 e m1 m2 m3 a
- DeepControl.Monad.Trans.Except: catchError4 :: (MonadError e m4, Commutative m1, Commutative m2, Commutative m3, Commutative m4) => m1 (m2 (m3 (m4 a))) -> (e -> m1 (m2 (m3 (m4 a)))) -> m1 (m2 (m3 (m4 a)))
+ DeepControl.Monad.Trans.Except: catchError4 :: (MonadError e m4, Commutative m1, Applicative m1, Commutative m2, Applicative m2, Commutative m3, Applicative m3, Commutative m4, Applicative m4) => Catch4 e m1 m2 m3 m4 a
- DeepControl.Monad.Trans.Except: catchError5 :: (MonadError e m5, Commutative m1, Commutative m2, Commutative m3, Commutative m4, Commutative m5) => m1 (m2 (m3 (m4 (m5 a)))) -> (e -> m1 (m2 (m3 (m4 (m5 a))))) -> m1 (m2 (m3 (m4 (m5 a))))
+ DeepControl.Monad.Trans.Except: catchError5 :: (MonadError e m5, Commutative m1, Applicative m1, Commutative m2, Applicative m2, Commutative m3, Applicative m3, Commutative m4, Applicative m4, Commutative m5, Applicative m5) => Catch5 e m1 m2 m3 m4 m5 a

Files

DeepControl/Applicative.hs view
@@ -351,8 +351,8 @@ -- [Just 3] -- >>> [1] -*|[Just (+), Just (-), Just (*), Nothing]|*- Just 2 -- [Just 3,Just (-1),Just 2,Nothing]--- >>> [0,1] -*|[Just (+), Just (-), Just (*), Nothing]|*- Just 2--- [Just 2,Just 3,Just (-2),Just (-1),Just 0,Just 2,Nothing,Nothing]+-- >>> [1,2] -*|[Just (+), Just (-), Just (*), Nothing]|*- Just 2+-- [Just 3,Just (-1),Just 2,Nothing,Just 4,Just 0,Just 4,Nothing] -- -- >>> print 1 -*|return [\_ _ -> 3]|-* print 2 -- 1
DeepControl/Arrow.hs view
@@ -20,6 +20,7 @@     ) where   import DeepControl.Applicative+import DeepControl.Commutative import DeepControl.Monad import Control.Arrow import Prelude hiding (id, (.))@@ -30,11 +31,11 @@  newtype Kleisli2 m1 m2 a b = Kleisli2 { runKleisli2 :: a -> m1 (m2 b) } -instance (Applicative m1, Monad m1, Monad2 m2) => Category (Kleisli2 m1 m2) where+instance (Monad m1, Monad m2, Commutative m2) => Category (Kleisli2 m1 m2) where     id = Kleisli2 $ (**:)      (Kleisli2 g) . (Kleisli2 f) = Kleisli2 $ f >==> g -instance (Applicative m1, Monad m1, Monad2 m2) => Arrow (Kleisli2 m1 m2) where+instance (Monad m1, Monad m2, Commutative m2) => Arrow (Kleisli2 m1 m2) where     arr f = Kleisli2 $ (**:) . f     first (Kleisli2 f) = Kleisli2 $ \ ~(b,d) -> f b >>== \c -> (**:) (c,d)     second (Kleisli2 f) = Kleisli2 $ \ ~(d,b) -> f b >>== \c -> (**:) (d,c)@@ -44,11 +45,11 @@  newtype Kleisli3 m1 m2 m3 a b = Kleisli3 { runKleisli3 :: a -> m1 (m2 (m3 b)) } -instance (Applicative m1, Monad m1, Monad2 m2, Monad3 m3) => Category (Kleisli3 m1 m2 m3) where+instance (Monad m1, Monad m2, Commutative m2, Monad m3, Commutative m3) => Category (Kleisli3 m1 m2 m3) where     id = Kleisli3 $ (***:)      (Kleisli3 g) . (Kleisli3 f) = Kleisli3 $ f >===> g -instance (Applicative m1, Monad m1, Monad2 m2, Monad3 m3) => Arrow (Kleisli3 m1 m2 m3) where+instance (Monad m1, Monad m2, Commutative m2, Monad m3, Commutative m3) => Arrow (Kleisli3 m1 m2 m3) where     arr f = Kleisli3 $ (***:) . f     first (Kleisli3 f) = Kleisli3 $ \ ~(b,d) -> f b >>>== \c -> (***:) (c,d)     second (Kleisli3 f) = Kleisli3 $ \ ~(d,b) -> f b >>>== \c -> (***:) (d,c)@@ -58,11 +59,11 @@  newtype Kleisli4 m1 m2 m3 m4 a b = Kleisli4 { runKleisli4 :: a -> m1 (m2 (m3 (m4 b))) } -instance (Applicative m1, Monad m1, Monad2 m2, Monad3 m3, Monad4 m4) => Category (Kleisli4 m1 m2 m3 m4) where+instance (Monad m1, Monad m2, Commutative m2, Monad m3, Commutative m3, Monad m4, Commutative m4) => Category (Kleisli4 m1 m2 m3 m4) where     id = Kleisli4 $ (****:)      (Kleisli4 g) . (Kleisli4 f) = Kleisli4 $ f >====> g -instance (Applicative m1, Monad m1, Monad2 m2, Monad3 m3, Monad4 m4) => Arrow (Kleisli4 m1 m2 m3 m4) where+instance (Monad m1, Monad m2, Commutative m2, Monad m3, Commutative m3, Monad m4, Commutative m4) => Arrow (Kleisli4 m1 m2 m3 m4) where     arr f = Kleisli4 $ (****:) . f     first (Kleisli4 f) = Kleisli4 $ \ ~(b,d) -> f b >>>>== \c -> (****:) (c,d)     second (Kleisli4 f) = Kleisli4 $ \ ~(d,b) -> f b >>>>== \c -> (****:) (d,c)@@ -72,13 +73,12 @@  newtype Kleisli5 m1 m2 m3 m4 m5 a b = Kleisli5 { runKleisli5 :: a -> m1 (m2 (m3 (m4 (m5 b)))) } -instance (Applicative m1, Monad m1, Monad2 m2, Monad3 m3, Monad4 m4, Monad5 m5) => Category (Kleisli5 m1 m2 m3 m4 m5) where+instance (Monad m1, Monad m2, Commutative m2, Monad m3, Commutative m3, Monad m4, Commutative m4, Monad m5, Commutative m5) => Category (Kleisli5 m1 m2 m3 m4 m5) where     id = Kleisli5 $ (*****:)     (Kleisli5 g) . (Kleisli5 f) = Kleisli5 $ f >=====> g -instance (Applicative m1, Monad m1, Monad2 m2, Monad3 m3, Monad4 m4, Monad5 m5) => Arrow (Kleisli5 m1 m2 m3 m4 m5) where+instance (Monad m1, Monad m2, Commutative m2, Monad m3, Commutative m3, Monad m4, Commutative m4, Monad m5, Commutative m5) => Arrow (Kleisli5 m1 m2 m3 m4 m5) where     arr f = Kleisli5 $ (*****:) . f     first (Kleisli5 f) = Kleisli5 $ \ ~(b,d) -> f b >>>>>== \c -> (*****:) (c,d)     second (Kleisli5 f) = Kleisli5 $ \ ~(d,b) -> f b >>>>>== \c -> (*****:) (d,c)- 
DeepControl/Commutative.hs view
@@ -47,7 +47,7 @@ -- | [], Maybe, Either, Except and Writer are all commutative each other. --   So these monads can be deepened to Monad2, Monad3, Monad4 and Monad5. -- -class (Applicative c) => Commutative c where+class (Functor c) => Commutative c where   -- | This method is equivalent for @'Data.Traversable.sequenceA'@ except the name.   --   The only difference is the name "commute", that is to say from which no action kind of concepts smell.   --@@ -88,10 +88,8 @@ instance Commutative (Except e) where     commute x = ExceptT . Identity |$> commute (runExcept x) -{- instance Commutative (Const m) where     commute (Const m) = (*:) $ Const m--}  {- instance Commutative ((->) r) where@@ -126,7 +124,7 @@ -- >>> sink2 $ Right (Just [1]) -- Just [Right 1] ---sink2 :: (Commutative m1, Commutative m2, Applicative m3) => +sink2 :: (Commutative m1, Applicative m2, Applicative m3) =>           m1 (m2 (m3 a)) -> m2 (m3 (m1 a)) sink2 = (commute|$>) . commute @@ -147,7 +145,7 @@ -- >>> sink3 $ Right [Just [1]] -- [Just [Right 1]] ---sink3 :: (Commutative m1, Commutative m2, Commutative m3, Applicative m4) => +sink3 :: (Commutative m1, Applicative m2, Applicative m3, Applicative m4) =>           m1 (m2 (m3 (m4 a))) -> m2 (m3 (m4 (m1 a))) sink3 = (sink2|$>) . commute @@ -163,7 +161,7 @@ ------------------------------------------------------------------------------ -- Level-4 -sink4 :: (Commutative m1, Commutative m2, Commutative m3, Commutative m4, Applicative m5) => +sink4 :: (Commutative m1, Applicative m2, Applicative m3, Applicative m4, Applicative m5) =>           m1 (m2 (m3 (m4 (m5 a)))) -> m2 (m3 (m4 (m5 (m1 a)))) sink4 = (sink3|$>) . commute @@ -174,7 +172,7 @@ ------------------------------------------------------------------------------ -- Level-5 -sink5 :: (Commutative m1, Commutative m2, Commutative m3, Commutative m4, Commutative m5, Applicative m6) => +sink5 :: (Commutative m1, Applicative m2, Applicative m3, Applicative m4, Applicative m5, Applicative m6) =>           m1 (m2 (m3 (m4 (m5 (m6 a))))) -> m2 (m3 (m4 (m5 (m6 (m1 a))))) sink5 = (sink4|$>) . commute 
DeepControl/Monad.hs view
@@ -8,12 +8,12 @@ Portability : ---  This module enables you to program in Monad for more __deeper__ level than the usual 'Control.Monad' module expresses.-You would soon realize exactly what __/more deeper level/__ means by reading the example codes in order, which are attached on the Monadx(Monad2, Monad3, etc) classes below.+You would soon realize exactly what __/more deeper level/__ means by reading the example codes in order, which are attached on the Monadx(Monad, Monad, etc) classes below.  Note:  -    * This module never makes mlt(monad-transformer-library) unnessasary. -      The range in which this module is helpful is regrettably confined to the range of deep monads (namely Monad2, Monad3, etc).+    * This module never makes mtl(monad-transformer-library) unnessasary. +      The range in which this module is helpful is regrettably confined to the range of deep monads (namely Monad, Monad, etc).          * In my opinion this bad confinement is hard-wired with the ability of the compiler, that is to say GHC doesn't parse @(r->)@ or @((->) r)@ as a data constructor;        thus some fundamental expressions such as @(r->)|$>@ or @fmap (r->)@ are useless.@@ -33,7 +33,7 @@      -- * Level-2     -- ** bind-    Monad2(..),+    (>>==),      -- ** sequence     (>>~),      -- ** cover-bind@@ -45,7 +45,7 @@      -- * Level-3     -- ** bind-    Monad3(..),  +    (>>>==),      -- ** sequence     (>>>~),     -- ** cover-bind @@ -57,7 +57,7 @@      -- * Level-4     -- ** bind-    Monad4(..), +    (>>>>==),      -- ** sequence     (>>>>~),      -- ** cover-bind @@ -73,7 +73,7 @@      -- * Level-5     -- ** bind-    Monad5(..), +    (>>>>>==),      -- ** sequence     (>>>>>~),      -- ** cover-bind @@ -88,10 +88,11 @@     (->>>>~), (>->>>~), (>>->>~), (>>>->~), (>>>>-~),     -- ** composite      (>=====>), -    +     ) where   import DeepControl.Applicative+import DeepControl.Commutative  import Control.Monad import Control.Monad.Writer (Writer, WriterT(..), runWriter)@@ -152,7 +153,7 @@ infixr 1  ->==, >-== infixr 1  ->~, >-~ --- | The 'Monad2' class defines the bind function for level-2 types @m1 (m2 a)@ such as [[a]], Maybe [a], Either () (Maybe a), a -> [b], IO [a], etc.+-- | The level-2 bind function, analogous for @'>>='@. --  -- >>> :{ --  -- List-List monad@@ -174,69 +175,39 @@ --  in [averageM [10, 25, 70], averageM []] -- :} -- [Just 35.0,Nothing]--- -class (Monad m2) => Monad2 m2 where-  -- | The level-2 bind function, analogous for @'>>='@.-  (>>==) :: (Monad m1) => m1 (m2 a) -> (a -> m1 (m2 b)) -> m1 (m2 b)+--+(>>==) :: (Monad m1, Monad m2, Commutative m2) => m1 (m2 a) -> (a -> m1 (m2 b)) -> m1 (m2 b)+m >>== f = m >>= \x -> join |$> (commute $ f |$> x)  -- | The level-2 composite function, analogous for @'>=>'@.-(>==>) :: (Monad m1, Monad2 m2) => (a -> m1 (m2 b)) -> (b -> m1 (m2 c)) -> a -> m1 (m2 c)+(>==>) :: (Monad m1, Monad m2, Commutative m2) => (a -> m1 (m2 b)) -> (b -> m1 (m2 c)) -> a -> m1 (m2 c) f >==> g = \x -> f x >>== g -- | The level-2 sequence function, analogous for @'>>'@. -- --   Definition: @ m >>~ f = m >>== \\_ -> f @-(>>~) :: (Monad m1, Monad2 m2) => m1 (m2 a) -> m1 (m2 b) -> m1 (m2 b)+(>>~) :: (Monad m1, Monad m2, Commutative m2) => m1 (m2 a) -> m1 (m2 b) -> m1 (m2 b) m >>~ f = m >>== \_ -> f -- | A level-2 cover-bind function, analogous for @'>>='@. -- --   Definition: @ m >-== f = (-*) m >>== f @-(>-==) :: (Monad m1, Monad2 m2) => m1 a -> (a -> m1 (m2 b)) -> m1 (m2 b)+(>-==) :: (Monad m1, Monad m2, Commutative m2) => m1 a -> (a -> m1 (m2 b)) -> m1 (m2 b) m >-== f = (-*) m >>== f -- | A level-2 cover-bind function, analogous for @'>>='@. -- --   Definition: @ m ->== f = (*:) m >>== f @-(->==) :: (Monad m1, Monad2 m2) => m2 a -> (a -> m1 (m2 b)) -> m1 (m2 b)+(->==) :: (Monad m1, Monad m2, Commutative m2) => m2 a -> (a -> m1 (m2 b)) -> m1 (m2 b) m ->== f = (*:) m >>== f -- | A level-2 cover-sequence function, analogous for @'>>'@. -- --   Definition: @ m >-~ f = (-*) m >>~ f @-(>-~) :: (Monad m1, Monad2 m2) => m1 a -> m1 (m2 b) -> m1 (m2 b)+(>-~) :: (Monad m1, Monad m2, Commutative m2) => m1 a -> m1 (m2 b) -> m1 (m2 b) m >-~ f = (-*) m >>~ f -- | A level-2 cover-sequence function, analogous for @'>>'@. -- --   Definition: @ m ->~ f = (*:) m >>~ f @-(->~) :: (Monad m1, Monad2 m2) => m2 a -> m1 (m2 b) -> m1 (m2 b)+(->~) :: (Monad m1, Monad m2, Commutative m2) => m2 a -> m1 (m2 b) -> m1 (m2 b) m ->~ f = (*:) m >>~ f -instance Monad2 Maybe where-    mv >>== f = -        mv >>= \mv ->-        case mv of -            Nothing -> (*:) Nothing-            Just a  -> f a--instance Monad2 [] where-    mv >>== f = -        mv >>= \xs -> -        foldr (\x acc -> f x <$|(++)|*> acc) ((*:) []) xs--instance Monad2 (Either e) where-    mv >>== f = -        mv >>= \mv -> -        case mv of-            Left l  -> (*:) (Left l)-            Right r -> f r--instance Monad2 (Except e) where-    m >>== f = (ExceptT . Identity |$>) $ (runExcept |$> m) >>== runExcept |$>> f--instance (Monoid w) => Monad2 (Writer w) where-    mv >>== f = -        mv >>= \x -> runWriterT x >- \(Identity (a, w)) ->-        f a <$| (\x -> runWriterT x >- \(Identity (b, w')) ->-                       WriterT $ Identity (b, w <> w'))-- ------------------------------------------------------------------------------- -- Level-3 functions @@ -245,7 +216,7 @@ infixr 1  >--==, ->-==, -->==, >>-==, >->==, ->>== infixr 1  >--~, ->-~, -->~, >>-~, >->~, ->>~ --- | The 'Monad3' class defines the bind function for level-3 types @m1 (m2 (m3 a)@.+-- | The level-3 bind function, analogous for @'>>='@. --  -- >>> :{ --  -- IO-List-List monad@@ -262,7 +233,7 @@ -- ("b",2) -- [["a0","b0"],["a0","b1","b2"],["a1","a2","b0"],["a1","a2","b1","b2"]] ----- This messy code above can be neatly rewritten to the code below with cover functions.+-- This messy code above can be neatly rewritten to the code below by grace of the cover functions. -- -- >>> :{ --  -- IO-List-List monad@@ -279,68 +250,39 @@ -- ("b",2) -- [["a0","b0"],["a0","b1","b2"],["a1","a2","b0"],["a1","a2","b1","b2"]] ---class (Monad2 m3) => Monad3 m3 where-  -- | The level-3 bind function, analogous for @'>>='@.-  (>>>==) :: (Monad m1, Monad2 m2) => m1 (m2 (m3 a)) -> (a -> m1 (m2 (m3 b))) -> m1 (m2 (m3 b))+(>>>==) :: (Monad m1, Monad m2, Commutative m2, Monad m3, Commutative m3) => m1 (m2 (m3 a)) -> (a -> m1 (m2 (m3 b))) -> m1 (m2 (m3 b))+m >>>== f = m >>== \x -> join |$>> (sink2 $ f |$> x) -(>===>) :: (Monad m1, Monad2 m2, Monad3 m3) => (a -> m1 (m2 (m3 b))) -> (b -> m1 (m2 (m3 c))) -> a -> m1 (m2 (m3 c))+(>===>) :: (Monad m1, Monad m2, Commutative m2, Monad m3, Commutative m3) => (a -> m1 (m2 (m3 b))) -> (b -> m1 (m2 (m3 c))) -> a -> m1 (m2 (m3 c)) f >===> g = \x -> f x >>>== g-(>>>~) :: (Monad m1, Monad2 m2, Monad3 m3) => m1 (m2 (m3 a)) -> m1 (m2 (m3 b)) -> m1 (m2 (m3 b))+(>>>~) :: (Monad m1, Monad m2, Commutative m2, Monad m3, Commutative m3) => m1 (m2 (m3 a)) -> m1 (m2 (m3 b)) -> m1 (m2 (m3 b)) m >>>~ k = m >>>== \_ -> k -(>--==) :: (Monad m1, Monad2 m2, Monad3 m3) => m1 a -> (a -> m1 (m2 (m3 b))) -> m1 (m2 (m3 b))+(>--==) :: (Monad m1, Monad m2, Commutative m2, Monad m3, Commutative m3) => m1 a -> (a -> m1 (m2 (m3 b))) -> m1 (m2 (m3 b)) m >--== k = (-**) m >>>== k-(->-==) :: (Monad m1, Monad2 m2, Monad3 m3) => m2 a -> (a -> m1 (m2 (m3 b))) -> m1 (m2 (m3 b))+(->-==) :: (Monad m1, Monad m2, Commutative m2, Monad m3, Commutative m3) => m2 a -> (a -> m1 (m2 (m3 b))) -> m1 (m2 (m3 b)) m ->-== k = (*-*) m >>>== k-(-->==) :: (Monad m1, Monad2 m2, Monad3 m3) => m3 a -> (a -> m1 (m2 (m3 b))) -> m1 (m2 (m3 b))+(-->==) :: (Monad m1, Monad m2, Commutative m2, Monad m3, Commutative m3) => m3 a -> (a -> m1 (m2 (m3 b))) -> m1 (m2 (m3 b)) m -->== k = (**:) m >>>== k-(>>-==) :: (Monad m1, Monad2 m2, Monad3 m3) => m1 (m2 a) -> (a -> m1 (m2 (m3 b))) -> m1 (m2 (m3 b))+(>>-==) :: (Monad m1, Monad m2, Commutative m2, Monad m3, Commutative m3) => m1 (m2 a) -> (a -> m1 (m2 (m3 b))) -> m1 (m2 (m3 b)) m >>-== k = (--*) m >>>== k-(->>==) :: (Monad m1, Monad2 m2, Monad3 m3) => m2 (m3 a) -> (a -> m1 (m2 (m3 b))) -> m1 (m2 (m3 b))+(->>==) :: (Monad m1, Monad m2, Commutative m2, Monad m3, Commutative m3) => m2 (m3 a) -> (a -> m1 (m2 (m3 b))) -> m1 (m2 (m3 b)) m ->>== k = (*:) m >>>== k-(>->==) :: (Monad m1, Monad2 m2, Monad3 m3) => m1 (m3 a) -> (a -> m1 (m2 (m3 b))) -> m1 (m2 (m3 b))+(>->==) :: (Monad m1, Monad m2, Commutative m2, Monad m3, Commutative m3) => m1 (m3 a) -> (a -> m1 (m2 (m3 b))) -> m1 (m2 (m3 b)) m >->== k = (-*) m >>>== k-(-->~) :: (Monad m1, Monad2 m2, Monad3 m3) => m3 a -> m1 (m2 (m3 b)) -> m1 (m2 (m3 b))+(-->~) :: (Monad m1, Monad m2, Commutative m2, Monad m3, Commutative m3) => m3 a -> m1 (m2 (m3 b)) -> m1 (m2 (m3 b)) m -->~ k = (**:) m >>>~ k-(->-~) :: (Monad m1, Monad2 m2, Monad3 m3) => m2 a -> m1 (m2 (m3 b)) -> m1 (m2 (m3 b))+(->-~) :: (Monad m1, Monad m2, Commutative m2, Monad m3, Commutative m3) => m2 a -> m1 (m2 (m3 b)) -> m1 (m2 (m3 b)) m ->-~ k = (*-*) m >>>~ k-(>--~) :: (Monad m1, Monad2 m2, Monad3 m3) => m1 a -> m1 (m2 (m3 b)) -> m1 (m2 (m3 b))+(>--~) :: (Monad m1, Monad m2, Commutative m2, Monad m3, Commutative m3) => m1 a -> m1 (m2 (m3 b)) -> m1 (m2 (m3 b)) m >--~ k = (-**) m >>>~ k-(->>~) :: (Monad m1, Monad2 m2, Monad3 m3) => m2 (m3 a) -> m1 (m2 (m3 b)) -> m1 (m2 (m3 b))+(->>~) :: (Monad m1, Monad m2, Commutative m2, Monad m3, Commutative m3) => m2 (m3 a) -> m1 (m2 (m3 b)) -> m1 (m2 (m3 b)) m ->>~ k = (*:) m >>>~ k-(>->~) :: (Monad m1, Monad2 m2, Monad3 m3) => m1 (m3 a) -> m1 (m2 (m3 b)) -> m1 (m2 (m3 b))+(>->~) :: (Monad m1, Monad m2, Commutative m2, Monad m3, Commutative m3) => m1 (m3 a) -> m1 (m2 (m3 b)) -> m1 (m2 (m3 b)) m >->~ k = (-*) m >>>~ k-(>>-~) :: (Monad m1, Monad2 m2, Monad3 m3) => m1 (m2 a) -> m1 (m2 (m3 b)) -> m1 (m2 (m3 b))+(>>-~) :: (Monad m1, Monad m2, Commutative m2, Monad m3, Commutative m3) => m1 (m2 a) -> m1 (m2 (m3 b)) -> m1 (m2 (m3 b)) m >>-~ k = (--*) m >>>~ k -instance Monad3 Maybe where-    mv >>>== f = -        mv >>== \mv ->-        case mv of -            Nothing -> (**:) Nothing-            Just a  -> f a--instance Monad3 [] where-    mv >>>== f = -        mv >>== \xs -> -        foldr (\x acc -> f x <<$|(++)|*>> acc) ((**:) []) xs --instance Monad3 (Either e) where-    mv >>>== f = -        mv >>== \mv -> -        case mv of-            Left l  -> (**:) (Left l)-            Right r -> f r--instance Monad3 (Except e) where-    m >>>== f = (ExceptT . Identity |$>>) $ (runExcept |$>> m) >>>== runExcept |$>>> f--instance (Monoid w) => Monad3 (Writer w) where-    mv >>>== f = -        mv >>== \x -> runWriterT x >- \(Identity (a, w)) ->-        f a <<$| (\x -> runWriterT x >- \(Identity (b, w')) ->-                        WriterT $ Identity (b, w <> w'))- ------------------------------------------------------------------------------- -- Level-4 functions @@ -353,104 +295,76 @@ infixr 1  -->>~, ->->~, >-->~, >->-~, ->>-~, >>--~ infixr 1  ->>>~, >->>~, >>->~, >>>-~ -class (Monad3 m4) => Monad4 m4 where-  (>>>>==) :: (Monad m1, Monad2 m2, Monad3 m3) => m1 (m2 (m3 (m4 a))) -> (a -> m1 (m2 (m3 (m4 b)))) -> m1 (m2 (m3 (m4 b)))+(>>>>==) :: (Monad m1, Monad m2, Commutative m2, Monad m3, Commutative m3, Monad m4, Commutative m4) => m1 (m2 (m3 (m4 a))) -> (a -> m1 (m2 (m3 (m4 b)))) -> m1 (m2 (m3 (m4 b)))+m >>>>== f = m >>>== \x -> join |$>>> (sink3 $ f |$> x) -(>====>) :: (Monad m1, Monad2 m2, Monad3 m3, Monad4 m4) => (a -> m1 (m2 (m3 (m4 b)))) -> (b -> m1 (m2 (m3 (m4 c)))) -> a -> m1 (m2 (m3 (m4 c)))+(>====>) :: (Monad m1, Monad m2, Commutative m2, Monad m3, Commutative m3, Monad m4, Commutative m4) => (a -> m1 (m2 (m3 (m4 b)))) -> (b -> m1 (m2 (m3 (m4 c)))) -> a -> m1 (m2 (m3 (m4 c))) f >====> g = \x -> f x >>>>== g-(>>>>~) :: (Monad m1, Monad2 m2, Monad3 m3, Monad4 m4) => m1 (m2 (m3 (m4 a))) -> m1 (m2 (m3 (m4 b))) -> m1 (m2 (m3 (m4 b)))+(>>>>~) :: (Monad m1, Monad m2, Commutative m2, Monad m3, Commutative m3, Monad m4, Commutative m4) => m1 (m2 (m3 (m4 a))) -> m1 (m2 (m3 (m4 b))) -> m1 (m2 (m3 (m4 b))) m >>>>~ k = m >>>>== \_ -> k -(--->==) :: (Monad m1, Monad2 m2, Monad3 m3, Monad4 m4) => m4 a -> (a -> m1 (m2 (m3 (m4 b)))) -> m1 (m2 (m3 (m4 b)))+(--->==) :: (Monad m1, Monad m2, Commutative m2, Monad m3, Commutative m3, Monad m4, Commutative m4) => m4 a -> (a -> m1 (m2 (m3 (m4 b)))) -> m1 (m2 (m3 (m4 b))) m --->== k = (***:) m >>>>== k -(-->-==) :: (Monad m1, Monad2 m2, Monad3 m3, Monad4 m4) => m3 a -> (a -> m1 (m2 (m3 (m4 b)))) -> m1 (m2 (m3 (m4 b)))+(-->-==) :: (Monad m1, Monad m2, Commutative m2, Monad m3, Commutative m3, Monad m4, Commutative m4) => m3 a -> (a -> m1 (m2 (m3 (m4 b)))) -> m1 (m2 (m3 (m4 b))) m -->-== k = (**-*) m >>>>== k -(->--==) :: (Monad m1, Monad2 m2, Monad3 m3, Monad4 m4) => m2 a -> (a -> m1 (m2 (m3 (m4 b)))) -> m1 (m2 (m3 (m4 b)))+(->--==) :: (Monad m1, Monad m2, Commutative m2, Monad m3, Commutative m3, Monad m4, Commutative m4) => m2 a -> (a -> m1 (m2 (m3 (m4 b)))) -> m1 (m2 (m3 (m4 b))) m ->--== k = (*-**) m >>>>== k -(>---==) :: (Monad m1, Monad2 m2, Monad3 m3, Monad4 m4) => m1 a -> (a -> m1 (m2 (m3 (m4 b)))) -> m1 (m2 (m3 (m4 b)))+(>---==) :: (Monad m1, Monad m2, Commutative m2, Monad m3, Commutative m3, Monad m4, Commutative m4) => m1 a -> (a -> m1 (m2 (m3 (m4 b)))) -> m1 (m2 (m3 (m4 b))) m >---== k = (-***) m >>>>== k -(-->>==) :: (Monad m1, Monad2 m2, Monad3 m3, Monad4 m4) => m3 (m4 a) -> (a -> m1 (m2 (m3 (m4 b)))) -> m1 (m2 (m3 (m4 b)))+(-->>==) :: (Monad m1, Monad m2, Commutative m2, Monad m3, Commutative m3, Monad m4, Commutative m4) => m3 (m4 a) -> (a -> m1 (m2 (m3 (m4 b)))) -> m1 (m2 (m3 (m4 b))) m -->>== k = (**:) m >>>>== k -(->->==) :: (Monad m1, Monad2 m2, Monad3 m3, Monad4 m4) => m2 (m4 a) -> (a -> m1 (m2 (m3 (m4 b)))) -> m1 (m2 (m3 (m4 b)))+(->->==) :: (Monad m1, Monad m2, Commutative m2, Monad m3, Commutative m3, Monad m4, Commutative m4) => m2 (m4 a) -> (a -> m1 (m2 (m3 (m4 b)))) -> m1 (m2 (m3 (m4 b))) m ->->== k = (*-*) m >>>>== k -(>-->==) :: (Monad m1, Monad2 m2, Monad3 m3, Monad4 m4) => m1 (m4 a) -> (a -> m1 (m2 (m3 (m4 b)))) -> m1 (m2 (m3 (m4 b)))+(>-->==) :: (Monad m1, Monad m2, Commutative m2, Monad m3, Commutative m3, Monad m4, Commutative m4) => m1 (m4 a) -> (a -> m1 (m2 (m3 (m4 b)))) -> m1 (m2 (m3 (m4 b))) m >-->== k = (-**) m >>>>== k -(>->-==) :: (Monad m1, Monad2 m2, Monad3 m3, Monad4 m4) => m1 (m3 a) -> (a -> m1 (m2 (m3 (m4 b)))) -> m1 (m2 (m3 (m4 b)))+(>->-==) :: (Monad m1, Monad m2, Commutative m2, Monad m3, Commutative m3, Monad m4, Commutative m4) => m1 (m3 a) -> (a -> m1 (m2 (m3 (m4 b)))) -> m1 (m2 (m3 (m4 b))) m >->-== k = (-*-*) m >>>>== k -(->>-==) :: (Monad m1, Monad2 m2, Monad3 m3, Monad4 m4) => m2 (m3 a) -> (a -> m1 (m2 (m3 (m4 b)))) -> m1 (m2 (m3 (m4 b)))+(->>-==) :: (Monad m1, Monad m2, Commutative m2, Monad m3, Commutative m3, Monad m4, Commutative m4) => m2 (m3 a) -> (a -> m1 (m2 (m3 (m4 b)))) -> m1 (m2 (m3 (m4 b))) m ->>-== k = (*--*) m >>>>== k -(>>--==) :: (Monad m1, Monad2 m2, Monad3 m3, Monad4 m4) => m1 (m2 a) -> (a -> m1 (m2 (m3 (m4 b)))) -> m1 (m2 (m3 (m4 b)))+(>>--==) :: (Monad m1, Monad m2, Commutative m2, Monad m3, Commutative m3, Monad m4, Commutative m4) => m1 (m2 a) -> (a -> m1 (m2 (m3 (m4 b)))) -> m1 (m2 (m3 (m4 b))) m >>--== k = (--**) m >>>>== k  -(->>>==) :: (Monad m1, Monad2 m2, Monad3 m3, Monad4 m4) => m2 (m3 (m4 a)) -> (a -> m1 (m2 (m3 (m4 b)))) -> m1 (m2 (m3 (m4 b)))+(->>>==) :: (Monad m1, Monad m2, Commutative m2, Monad m3, Commutative m3, Monad m4, Commutative m4) => m2 (m3 (m4 a)) -> (a -> m1 (m2 (m3 (m4 b)))) -> m1 (m2 (m3 (m4 b))) m ->>>== k = (*:) m >>>>== k -(>->>==) :: (Monad m1, Monad2 m2, Monad3 m3, Monad4 m4) => m1 (m3 (m4 a)) -> (a -> m1 (m2 (m3 (m4 b)))) -> m1 (m2 (m3 (m4 b)))+(>->>==) :: (Monad m1, Monad m2, Commutative m2, Monad m3, Commutative m3, Monad m4, Commutative m4) => m1 (m3 (m4 a)) -> (a -> m1 (m2 (m3 (m4 b)))) -> m1 (m2 (m3 (m4 b))) m >->>== k = (-*) m >>>>== k -(>>->==) :: (Monad m1, Monad2 m2, Monad3 m3, Monad4 m4) => m1 (m2 (m4 a)) -> (a -> m1 (m2 (m3 (m4 b)))) -> m1 (m2 (m3 (m4 b)))+(>>->==) :: (Monad m1, Monad m2, Commutative m2, Monad m3, Commutative m3, Monad m4, Commutative m4) => m1 (m2 (m4 a)) -> (a -> m1 (m2 (m3 (m4 b)))) -> m1 (m2 (m3 (m4 b))) m >>->== k = (--*) m >>>>== k -(>>>-==) :: (Monad m1, Monad2 m2, Monad3 m3, Monad4 m4) => m1 (m2 (m3 a)) -> (a -> m1 (m2 (m3 (m4 b)))) -> m1 (m2 (m3 (m4 b)))+(>>>-==) :: (Monad m1, Monad m2, Commutative m2, Monad m3, Commutative m3, Monad m4, Commutative m4) => m1 (m2 (m3 a)) -> (a -> m1 (m2 (m3 (m4 b)))) -> m1 (m2 (m3 (m4 b))) m >>>-== k = (---*) m >>>>== k  -(--->~) :: (Monad m1, Monad2 m2, Monad3 m3, Monad4 m4) => m4 a -> m1 (m2 (m3 (m4 b))) -> m1 (m2 (m3 (m4 b)))+(--->~) :: (Monad m1, Monad m2, Commutative m2, Monad m3, Commutative m3, Monad m4, Commutative m4) => m4 a -> m1 (m2 (m3 (m4 b))) -> m1 (m2 (m3 (m4 b))) m --->~ k = (***:) m >>>>~ k-(-->-~) :: (Monad m1, Monad2 m2, Monad3 m3, Monad4 m4) => m3 a -> m1 (m2 (m3 (m4 b))) -> m1 (m2 (m3 (m4 b)))+(-->-~) :: (Monad m1, Monad m2, Commutative m2, Monad m3, Commutative m3, Monad m4, Commutative m4) => m3 a -> m1 (m2 (m3 (m4 b))) -> m1 (m2 (m3 (m4 b))) m -->-~ k = (**-*) m >>>>~ k-(->--~) :: (Monad m1, Monad2 m2, Monad3 m3, Monad4 m4) => m2 a -> m1 (m2 (m3 (m4 b))) -> m1 (m2 (m3 (m4 b)))+(->--~) :: (Monad m1, Monad m2, Commutative m2, Monad m3, Commutative m3, Monad m4, Commutative m4) => m2 a -> m1 (m2 (m3 (m4 b))) -> m1 (m2 (m3 (m4 b))) m ->--~ k = (*-**) m >>>>~ k-(>---~) :: (Monad m1, Monad2 m2, Monad3 m3, Monad4 m4) => m1 a -> m1 (m2 (m3 (m4 b))) -> m1 (m2 (m3 (m4 b)))+(>---~) :: (Monad m1, Monad m2, Commutative m2, Monad m3, Commutative m3, Monad m4, Commutative m4) => m1 a -> m1 (m2 (m3 (m4 b))) -> m1 (m2 (m3 (m4 b))) m >---~ k = (-***) m >>>>~ k -(-->>~) :: (Monad m1, Monad2 m2, Monad3 m3, Monad4 m4) => m3 (m4 a) -> m1 (m2 (m3 (m4 b))) -> m1 (m2 (m3 (m4 b)))+(-->>~) :: (Monad m1, Monad m2, Commutative m2, Monad m3, Commutative m3, Monad m4, Commutative m4) => m3 (m4 a) -> m1 (m2 (m3 (m4 b))) -> m1 (m2 (m3 (m4 b))) m -->>~ k = (**:) m >>>>~ k-(->->~) :: (Monad m1, Monad2 m2, Monad3 m3, Monad4 m4) => m2 (m4 a) -> m1 (m2 (m3 (m4 b))) -> m1 (m2 (m3 (m4 b)))+(->->~) :: (Monad m1, Monad m2, Commutative m2, Monad m3, Commutative m3, Monad m4, Commutative m4) => m2 (m4 a) -> m1 (m2 (m3 (m4 b))) -> m1 (m2 (m3 (m4 b))) m ->->~ k = (*-*) m >>>>~ k-(>-->~) :: (Monad m1, Monad2 m2, Monad3 m3, Monad4 m4) => m1 (m4 a) -> m1 (m2 (m3 (m4 b))) -> m1 (m2 (m3 (m4 b)))+(>-->~) :: (Monad m1, Monad m2, Commutative m2, Monad m3, Commutative m3, Monad m4, Commutative m4) => m1 (m4 a) -> m1 (m2 (m3 (m4 b))) -> m1 (m2 (m3 (m4 b))) m >-->~ k = (-**) m >>>>~ k-(>->-~) :: (Monad m1, Monad2 m2, Monad3 m3, Monad4 m4) => m1 (m3 a) -> m1 (m2 (m3 (m4 b))) -> m1 (m2 (m3 (m4 b)))+(>->-~) :: (Monad m1, Monad m2, Commutative m2, Monad m3, Commutative m3, Monad m4, Commutative m4) => m1 (m3 a) -> m1 (m2 (m3 (m4 b))) -> m1 (m2 (m3 (m4 b))) m >->-~ k = (-*-*) m >>>>~ k-(->>-~) :: (Monad m1, Monad2 m2, Monad3 m3, Monad4 m4) => m2 (m3 a) -> m1 (m2 (m3 (m4 b))) -> m1 (m2 (m3 (m4 b)))+(->>-~) :: (Monad m1, Monad m2, Commutative m2, Monad m3, Commutative m3, Monad m4, Commutative m4) => m2 (m3 a) -> m1 (m2 (m3 (m4 b))) -> m1 (m2 (m3 (m4 b))) m ->>-~ k = (*--*) m >>>>~ k-(>>--~) :: (Monad m1, Monad2 m2, Monad3 m3, Monad4 m4) => m1 (m2 a) -> m1 (m2 (m3 (m4 b))) -> m1 (m2 (m3 (m4 b)))+(>>--~) :: (Monad m1, Monad m2, Commutative m2, Monad m3, Commutative m3, Monad m4, Commutative m4) => m1 (m2 a) -> m1 (m2 (m3 (m4 b))) -> m1 (m2 (m3 (m4 b))) m >>--~ k = (--**) m >>>>~ k -(->>>~) :: (Monad m1, Monad2 m2, Monad3 m3, Monad4 m4) => m2 (m3 (m4 a)) -> m1 (m2 (m3 (m4 b))) -> m1 (m2 (m3 (m4 b)))+(->>>~) :: (Monad m1, Monad m2, Commutative m2, Monad m3, Commutative m3, Monad m4, Commutative m4) => m2 (m3 (m4 a)) -> m1 (m2 (m3 (m4 b))) -> m1 (m2 (m3 (m4 b))) m ->>>~ k = (*:) m >>>>~ k-(>->>~) :: (Monad m1, Monad2 m2, Monad3 m3, Monad4 m4) => m1 (m3 (m4 a)) -> m1 (m2 (m3 (m4 b))) -> m1 (m2 (m3 (m4 b)))+(>->>~) :: (Monad m1, Monad m2, Commutative m2, Monad m3, Commutative m3, Monad m4, Commutative m4) => m1 (m3 (m4 a)) -> m1 (m2 (m3 (m4 b))) -> m1 (m2 (m3 (m4 b))) m >->>~ k = (-*) m >>>>~ k-(>>->~) :: (Monad m1, Monad2 m2, Monad3 m3, Monad4 m4) => m1 (m2 (m4 a)) -> m1 (m2 (m3 (m4 b))) -> m1 (m2 (m3 (m4 b)))+(>>->~) :: (Monad m1, Monad m2, Commutative m2, Monad m3, Commutative m3, Monad m4, Commutative m4) => m1 (m2 (m4 a)) -> m1 (m2 (m3 (m4 b))) -> m1 (m2 (m3 (m4 b))) m >>->~ k = (--*) m >>>>~ k-(>>>-~) :: (Monad m1, Monad2 m2, Monad3 m3, Monad4 m4) => m1 (m2 (m3 a)) -> m1 (m2 (m3 (m4 b))) -> m1 (m2 (m3 (m4 b)))+(>>>-~) :: (Monad m1, Monad m2, Commutative m2, Monad m3, Commutative m3, Monad m4, Commutative m4) => m1 (m2 (m3 a)) -> m1 (m2 (m3 (m4 b))) -> m1 (m2 (m3 (m4 b))) m >>>-~ k = (---*) m >>>>~ k -instance Monad4 Maybe where-    mv >>>>== f = -        mv >>>== \mv ->-        case mv of -            Nothing -> (***:) Nothing-            Just a  -> f a--instance Monad4 [] where-    mv >>>>== f = -        mv >>>== \xs -> -        foldr (\x acc -> f x <<<$|(++)|*>>> acc) ((***:) []) xs --instance Monad4 (Either e) where-    mv >>>>== f = -        mv >>>== \mv -> -        case mv of-            Left l  -> (***:) (Left l)-            Right r -> f r--instance Monad4 (Except e) where-    m >>>>== f = (ExceptT . Identity |$>>>) $ (runExcept |$>>> m) >>>>== runExcept |$>>>> f--instance (Monoid w) => Monad4 (Writer w) where-    mv >>>>== f = -        mv >>>== \x -> runWriterT x >- \(Identity (a, w)) ->-        f a <<<$| (\x -> runWriterT x >- \(Identity (b, w')) ->-                         WriterT $ Identity (b, w <> w'))- ------------------------------------------------------------------------------- -- Level-5 functions @@ -466,168 +380,140 @@ infixr 1  -->>>~, ->->>~, >-->>~, >->->~, ->>->~, >>-->~, >>->-~, >->>-~, ->>>-~, >>>--~ infixr 1  ->>>>~, >->>>~, >>->>~, >>>->~, >>>>-~ -class (Monad4 m5) => Monad5 m5 where-  (>>>>>==) :: (Monad m1, Monad2 m2, Monad3 m3, Monad4 m4) => m1 (m2 (m3 (m4 (m5 a)))) -> (a -> m1 (m2 (m3 (m4 (m5 b))))) -> m1 (m2 (m3 (m4 (m5 b))))+(>>>>>==) :: (Monad m1, Monad m2, Commutative m2, Monad m3, Commutative m3, Monad m4, Commutative m4, Monad m5, Commutative m5) => m1 (m2 (m3 (m4 (m5 a)))) -> (a -> m1 (m2 (m3 (m4 (m5 b))))) -> m1 (m2 (m3 (m4 (m5 b))))+m >>>>>== f = m >>>>== \x -> join |$>>>> (sink4 $ f |$> x) -(>=====>) :: (Monad m1, Monad2 m2, Monad3 m3, Monad4 m4, Monad5 m5) => (a -> m1 (m2 (m3 (m4 (m5 b))))) -> (b -> m1 (m2 (m3 (m4 (m5 c))))) -> a -> m1 (m2 (m3 (m4 (m5 c))))+(>=====>) :: (Monad m1, Monad m2, Commutative m2, Monad m3, Commutative m3, Monad m4, Commutative m4, Monad m5, Commutative m5) => (a -> m1 (m2 (m3 (m4 (m5 b))))) -> (b -> m1 (m2 (m3 (m4 (m5 c))))) -> a -> m1 (m2 (m3 (m4 (m5 c)))) f >=====> g = \x -> f x >>>>>== g-(>>>>>~) :: (Monad m1, Monad2 m2, Monad3 m3, Monad4 m4, Monad5 m5) => m1 (m2 (m3 (m4 (m5 a)))) -> m1 (m2 (m3 (m4 (m5 b)))) -> m1 (m2 (m3 (m4 (m5 b))))+(>>>>>~) :: (Monad m1, Monad m2, Commutative m2, Monad m3, Commutative m3, Monad m4, Commutative m4, Monad m5, Commutative m5) => m1 (m2 (m3 (m4 (m5 a)))) -> m1 (m2 (m3 (m4 (m5 b)))) -> m1 (m2 (m3 (m4 (m5 b)))) m >>>>>~ k = m >>>>>== \_ -> k -(---->==) :: (Monad m1, Monad2 m2, Monad3 m3, Monad4 m4, Monad5 m5) => m5 a -> (a -> m1 (m2 (m3 (m4 (m5 b))))) -> m1 (m2 (m3 (m4 (m5 b))))+(---->==) :: (Monad m1, Monad m2, Commutative m2, Monad m3, Commutative m3, Monad m4, Commutative m4, Monad m5, Commutative m5) => m5 a -> (a -> m1 (m2 (m3 (m4 (m5 b))))) -> m1 (m2 (m3 (m4 (m5 b)))) m ---->== k = (****:) m >>>>>== k -(--->-==) :: (Monad m1, Monad2 m2, Monad3 m3, Monad4 m4, Monad5 m5) => m4 a -> (a -> m1 (m2 (m3 (m4 (m5 b))))) -> m1 (m2 (m3 (m4 (m5 b))))+(--->-==) :: (Monad m1, Monad m2, Commutative m2, Monad m3, Commutative m3, Monad m4, Commutative m4, Monad m5, Commutative m5) => m4 a -> (a -> m1 (m2 (m3 (m4 (m5 b))))) -> m1 (m2 (m3 (m4 (m5 b)))) m --->-== k = (***-*) m >>>>>== k -(-->--==) :: (Monad m1, Monad2 m2, Monad3 m3, Monad4 m4, Monad5 m5) => m3 a -> (a -> m1 (m2 (m3 (m4 (m5 b))))) -> m1 (m2 (m3 (m4 (m5 b))))+(-->--==) :: (Monad m1, Monad m2, Commutative m2, Monad m3, Commutative m3, Monad m4, Commutative m4, Monad m5, Commutative m5) => m3 a -> (a -> m1 (m2 (m3 (m4 (m5 b))))) -> m1 (m2 (m3 (m4 (m5 b)))) m -->--== k = (**-**) m >>>>>== k -(->---==) :: (Monad m1, Monad2 m2, Monad3 m3, Monad4 m4, Monad5 m5) => m2 a -> (a -> m1 (m2 (m3 (m4 (m5 b))))) -> m1 (m2 (m3 (m4 (m5 b))))+(->---==) :: (Monad m1, Monad m2, Commutative m2, Monad m3, Commutative m3, Monad m4, Commutative m4, Monad m5, Commutative m5) => m2 a -> (a -> m1 (m2 (m3 (m4 (m5 b))))) -> m1 (m2 (m3 (m4 (m5 b)))) m ->---== k = (*-***) m >>>>>== k -(>----==) :: (Monad m1, Monad2 m2, Monad3 m3, Monad4 m4, Monad5 m5) => m1 a -> (a -> m1 (m2 (m3 (m4 (m5 b))))) -> m1 (m2 (m3 (m4 (m5 b))))+(>----==) :: (Monad m1, Monad m2, Commutative m2, Monad m3, Commutative m3, Monad m4, Commutative m4, Monad m5, Commutative m5) => m1 a -> (a -> m1 (m2 (m3 (m4 (m5 b))))) -> m1 (m2 (m3 (m4 (m5 b)))) m >----== k = (-****) m >>>>>== k  -(--->>==) :: (Monad m1, Monad2 m2, Monad3 m3, Monad4 m4, Monad5 m5) => m4 (m5 a) -> (a -> m1 (m2 (m3 (m4 (m5 b))))) -> m1 (m2 (m3 (m4 (m5 b))))+(--->>==) :: (Monad m1, Monad m2, Commutative m2, Monad m3, Commutative m3, Monad m4, Commutative m4, Monad m5, Commutative m5) => m4 (m5 a) -> (a -> m1 (m2 (m3 (m4 (m5 b))))) -> m1 (m2 (m3 (m4 (m5 b)))) m --->>== k = (***:) m >>>>>== k -(-->->==) :: (Monad m1, Monad2 m2, Monad3 m3, Monad4 m4, Monad5 m5) => m3 (m5 a) -> (a -> m1 (m2 (m3 (m4 (m5 b))))) -> m1 (m2 (m3 (m4 (m5 b))))+(-->->==) :: (Monad m1, Monad m2, Commutative m2, Monad m3, Commutative m3, Monad m4, Commutative m4, Monad m5, Commutative m5) => m3 (m5 a) -> (a -> m1 (m2 (m3 (m4 (m5 b))))) -> m1 (m2 (m3 (m4 (m5 b)))) m -->->== k = (**-*) m >>>>>== k -(->-->==) :: (Monad m1, Monad2 m2, Monad3 m3, Monad4 m4, Monad5 m5) => m2 (m5 a) -> (a -> m1 (m2 (m3 (m4 (m5 b))))) -> m1 (m2 (m3 (m4 (m5 b))))+(->-->==) :: (Monad m1, Monad m2, Commutative m2, Monad m3, Commutative m3, Monad m4, Commutative m4, Monad m5, Commutative m5) => m2 (m5 a) -> (a -> m1 (m2 (m3 (m4 (m5 b))))) -> m1 (m2 (m3 (m4 (m5 b)))) m ->-->== k = (*-**) m >>>>>== k -(>--->==) :: (Monad m1, Monad2 m2, Monad3 m3, Monad4 m4, Monad5 m5) => m1 (m5 a) -> (a -> m1 (m2 (m3 (m4 (m5 b))))) -> m1 (m2 (m3 (m4 (m5 b))))+(>--->==) :: (Monad m1, Monad m2, Commutative m2, Monad m3, Commutative m3, Monad m4, Commutative m4, Monad m5, Commutative m5) => m1 (m5 a) -> (a -> m1 (m2 (m3 (m4 (m5 b))))) -> m1 (m2 (m3 (m4 (m5 b)))) m >--->== k = (-***) m >>>>>== k -(>-->-==) :: (Monad m1, Monad2 m2, Monad3 m3, Monad4 m4, Monad5 m5) => m1 (m4 a) -> (a -> m1 (m2 (m3 (m4 (m5 b))))) -> m1 (m2 (m3 (m4 (m5 b))))+(>-->-==) :: (Monad m1, Monad m2, Commutative m2, Monad m3, Commutative m3, Monad m4, Commutative m4, Monad m5, Commutative m5) => m1 (m4 a) -> (a -> m1 (m2 (m3 (m4 (m5 b))))) -> m1 (m2 (m3 (m4 (m5 b)))) m >-->-== k = (-**-*) m >>>>>== k -(->->-==) :: (Monad m1, Monad2 m2, Monad3 m3, Monad4 m4, Monad5 m5) => m2 (m4 a) -> (a -> m1 (m2 (m3 (m4 (m5 b))))) -> m1 (m2 (m3 (m4 (m5 b))))+(->->-==) :: (Monad m1, Monad m2, Commutative m2, Monad m3, Commutative m3, Monad m4, Commutative m4, Monad m5, Commutative m5) => m2 (m4 a) -> (a -> m1 (m2 (m3 (m4 (m5 b))))) -> m1 (m2 (m3 (m4 (m5 b)))) m ->->-== k = (*-*-*) m >>>>>== k -(-->>-==) :: (Monad m1, Monad2 m2, Monad3 m3, Monad4 m4, Monad5 m5) => m3 (m4 a) -> (a -> m1 (m2 (m3 (m4 (m5 b))))) -> m1 (m2 (m3 (m4 (m5 b))))+(-->>-==) :: (Monad m1, Monad m2, Commutative m2, Monad m3, Commutative m3, Monad m4, Commutative m4, Monad m5, Commutative m5) => m3 (m4 a) -> (a -> m1 (m2 (m3 (m4 (m5 b))))) -> m1 (m2 (m3 (m4 (m5 b)))) m -->>-== k = (**--*) m >>>>>== k -(->>--==) :: (Monad m1, Monad2 m2, Monad3 m3, Monad4 m4, Monad5 m5) => m2 (m3 a) -> (a -> m1 (m2 (m3 (m4 (m5 b))))) -> m1 (m2 (m3 (m4 (m5 b))))+(->>--==) :: (Monad m1, Monad m2, Commutative m2, Monad m3, Commutative m3, Monad m4, Commutative m4, Monad m5, Commutative m5) => m2 (m3 a) -> (a -> m1 (m2 (m3 (m4 (m5 b))))) -> m1 (m2 (m3 (m4 (m5 b)))) m ->>--== k = (*--**) m >>>>>== k -(>->--==) :: (Monad m1, Monad2 m2, Monad3 m3, Monad4 m4, Monad5 m5) => m1 (m3 a) -> (a -> m1 (m2 (m3 (m4 (m5 b))))) -> m1 (m2 (m3 (m4 (m5 b))))+(>->--==) :: (Monad m1, Monad m2, Commutative m2, Monad m3, Commutative m3, Monad m4, Commutative m4, Monad m5, Commutative m5) => m1 (m3 a) -> (a -> m1 (m2 (m3 (m4 (m5 b))))) -> m1 (m2 (m3 (m4 (m5 b)))) m >->--== k = (-*-**) m >>>>>== k -(>>---==) :: (Monad m1, Monad2 m2, Monad3 m3, Monad4 m4, Monad5 m5) => m1 (m2 a) -> (a -> m1 (m2 (m3 (m4 (m5 b))))) -> m1 (m2 (m3 (m4 (m5 b))))+(>>---==) :: (Monad m1, Monad m2, Commutative m2, Monad m3, Commutative m3, Monad m4, Commutative m4, Monad m5, Commutative m5) => m1 (m2 a) -> (a -> m1 (m2 (m3 (m4 (m5 b))))) -> m1 (m2 (m3 (m4 (m5 b)))) m >>---== k = (--***) m >>>>>== k  -(-->>>==) :: (Monad m1, Monad2 m2, Monad3 m3, Monad4 m4, Monad5 m5) => m3 (m4 (m5 a)) -> (a -> m1 (m2 (m3 (m4 (m5 b))))) -> m1 (m2 (m3 (m4 (m5 b))))+(-->>>==) :: (Monad m1, Monad m2, Commutative m2, Monad m3, Commutative m3, Monad m4, Commutative m4, Monad m5, Commutative m5) => m3 (m4 (m5 a)) -> (a -> m1 (m2 (m3 (m4 (m5 b))))) -> m1 (m2 (m3 (m4 (m5 b)))) m -->>>== k = (**:) m >>>>>== k -(->->>==) :: (Monad m1, Monad2 m2, Monad3 m3, Monad4 m4, Monad5 m5) => m2 (m4 (m5 a)) -> (a -> m1 (m2 (m3 (m4 (m5 b))))) -> m1 (m2 (m3 (m4 (m5 b))))+(->->>==) :: (Monad m1, Monad m2, Commutative m2, Monad m3, Commutative m3, Monad m4, Commutative m4, Monad m5, Commutative m5) => m2 (m4 (m5 a)) -> (a -> m1 (m2 (m3 (m4 (m5 b))))) -> m1 (m2 (m3 (m4 (m5 b)))) m ->->>== k = (*-*) m >>>>>== k -(>-->>==) :: (Monad m1, Monad2 m2, Monad3 m3, Monad4 m4, Monad5 m5) => m1 (m4 (m5 a)) -> (a -> m1 (m2 (m3 (m4 (m5 b))))) -> m1 (m2 (m3 (m4 (m5 b))))+(>-->>==) :: (Monad m1, Monad m2, Commutative m2, Monad m3, Commutative m3, Monad m4, Commutative m4, Monad m5, Commutative m5) => m1 (m4 (m5 a)) -> (a -> m1 (m2 (m3 (m4 (m5 b))))) -> m1 (m2 (m3 (m4 (m5 b)))) m >-->>== k = (-**) m >>>>>== k -(>->->==) :: (Monad m1, Monad2 m2, Monad3 m3, Monad4 m4, Monad5 m5) => m1 (m3 (m5 a)) -> (a -> m1 (m2 (m3 (m4 (m5 b))))) -> m1 (m2 (m3 (m4 (m5 b))))+(>->->==) :: (Monad m1, Monad m2, Commutative m2, Monad m3, Commutative m3, Monad m4, Commutative m4, Monad m5, Commutative m5) => m1 (m3 (m5 a)) -> (a -> m1 (m2 (m3 (m4 (m5 b))))) -> m1 (m2 (m3 (m4 (m5 b)))) m >->->== k = (-*-*) m >>>>>== k -(->>->==) :: (Monad m1, Monad2 m2, Monad3 m3, Monad4 m4, Monad5 m5) => m2 (m3 (m5 a)) -> (a -> m1 (m2 (m3 (m4 (m5 b))))) -> m1 (m2 (m3 (m4 (m5 b))))+(->>->==) :: (Monad m1, Monad m2, Commutative m2, Monad m3, Commutative m3, Monad m4, Commutative m4, Monad m5, Commutative m5) => m2 (m3 (m5 a)) -> (a -> m1 (m2 (m3 (m4 (m5 b))))) -> m1 (m2 (m3 (m4 (m5 b)))) m ->>->== k = (*--*) m >>>>>== k -(>>-->==) :: (Monad m1, Monad2 m2, Monad3 m3, Monad4 m4, Monad5 m5) => m1 (m2 (m5 a)) -> (a -> m1 (m2 (m3 (m4 (m5 b))))) -> m1 (m2 (m3 (m4 (m5 b))))+(>>-->==) :: (Monad m1, Monad m2, Commutative m2, Monad m3, Commutative m3, Monad m4, Commutative m4, Monad m5, Commutative m5) => m1 (m2 (m5 a)) -> (a -> m1 (m2 (m3 (m4 (m5 b))))) -> m1 (m2 (m3 (m4 (m5 b)))) m >>-->== k = (--**) m >>>>>== k -(>>->-==) :: (Monad m1, Monad2 m2, Monad3 m3, Monad4 m4, Monad5 m5) => m1 (m2 (m4 a)) -> (a -> m1 (m2 (m3 (m4 (m5 b))))) -> m1 (m2 (m3 (m4 (m5 b))))+(>>->-==) :: (Monad m1, Monad m2, Commutative m2, Monad m3, Commutative m3, Monad m4, Commutative m4, Monad m5, Commutative m5) => m1 (m2 (m4 a)) -> (a -> m1 (m2 (m3 (m4 (m5 b))))) -> m1 (m2 (m3 (m4 (m5 b)))) m >>->-== k = (--*-*) m >>>>>== k -(>->>-==) :: (Monad m1, Monad2 m2, Monad3 m3, Monad4 m4, Monad5 m5) => m1 (m3 (m4 a)) -> (a -> m1 (m2 (m3 (m4 (m5 b))))) -> m1 (m2 (m3 (m4 (m5 b))))+(>->>-==) :: (Monad m1, Monad m2, Commutative m2, Monad m3, Commutative m3, Monad m4, Commutative m4, Monad m5, Commutative m5) => m1 (m3 (m4 a)) -> (a -> m1 (m2 (m3 (m4 (m5 b))))) -> m1 (m2 (m3 (m4 (m5 b)))) m >->>-== k = (-*--*) m >>>>>== k -(->>>-==) :: (Monad m1, Monad2 m2, Monad3 m3, Monad4 m4, Monad5 m5) => m2 (m3 (m4 a)) -> (a -> m1 (m2 (m3 (m4 (m5 b))))) -> m1 (m2 (m3 (m4 (m5 b))))+(->>>-==) :: (Monad m1, Monad m2, Commutative m2, Monad m3, Commutative m3, Monad m4, Commutative m4, Monad m5, Commutative m5) => m2 (m3 (m4 a)) -> (a -> m1 (m2 (m3 (m4 (m5 b))))) -> m1 (m2 (m3 (m4 (m5 b)))) m ->>>-== k = (*---*) m >>>>>== k -(>>>--==) :: (Monad m1, Monad2 m2, Monad3 m3, Monad4 m4, Monad5 m5) => m1 (m2 (m3 a)) -> (a -> m1 (m2 (m3 (m4 (m5 b))))) -> m1 (m2 (m3 (m4 (m5 b))))+(>>>--==) :: (Monad m1, Monad m2, Commutative m2, Monad m3, Commutative m3, Monad m4, Commutative m4, Monad m5, Commutative m5) => m1 (m2 (m3 a)) -> (a -> m1 (m2 (m3 (m4 (m5 b))))) -> m1 (m2 (m3 (m4 (m5 b)))) m >>>--== k = (---**) m >>>>>== k  -(->>>>==) :: (Monad m1, Monad2 m2, Monad3 m3, Monad4 m4, Monad5 m5) => m2 (m3 (m4 (m5 a))) -> (a -> m1 (m2 (m3 (m4 (m5 b))))) -> m1 (m2 (m3 (m4 (m5 b))))+(->>>>==) :: (Monad m1, Monad m2, Commutative m2, Monad m3, Commutative m3, Monad m4, Commutative m4, Monad m5, Commutative m5) => m2 (m3 (m4 (m5 a))) -> (a -> m1 (m2 (m3 (m4 (m5 b))))) -> m1 (m2 (m3 (m4 (m5 b)))) m ->>>>== k = (*:) m >>>>>== k -(>->>>==) :: (Monad m1, Monad2 m2, Monad3 m3, Monad4 m4, Monad5 m5) => m1 (m3 (m4 (m5 a))) -> (a -> m1 (m2 (m3 (m4 (m5 b))))) -> m1 (m2 (m3 (m4 (m5 b))))+(>->>>==) :: (Monad m1, Monad m2, Commutative m2, Monad m3, Commutative m3, Monad m4, Commutative m4, Monad m5, Commutative m5) => m1 (m3 (m4 (m5 a))) -> (a -> m1 (m2 (m3 (m4 (m5 b))))) -> m1 (m2 (m3 (m4 (m5 b)))) m >->>>== k = (-*) m >>>>>== k -(>>->>==) :: (Monad m1, Monad2 m2, Monad3 m3, Monad4 m4, Monad5 m5) => m1 (m2 (m4 (m5 a))) -> (a -> m1 (m2 (m3 (m4 (m5 b))))) -> m1 (m2 (m3 (m4 (m5 b))))+(>>->>==) :: (Monad m1, Monad m2, Commutative m2, Monad m3, Commutative m3, Monad m4, Commutative m4, Monad m5, Commutative m5) => m1 (m2 (m4 (m5 a))) -> (a -> m1 (m2 (m3 (m4 (m5 b))))) -> m1 (m2 (m3 (m4 (m5 b)))) m >>->>== k = (--*) m >>>>>== k -(>>>->==) :: (Monad m1, Monad2 m2, Monad3 m3, Monad4 m4, Monad5 m5) => m1 (m2 (m3 (m5 a))) -> (a -> m1 (m2 (m3 (m4 (m5 b))))) -> m1 (m2 (m3 (m4 (m5 b))))+(>>>->==) :: (Monad m1, Monad m2, Commutative m2, Monad m3, Commutative m3, Monad m4, Commutative m4, Monad m5, Commutative m5) => m1 (m2 (m3 (m5 a))) -> (a -> m1 (m2 (m3 (m4 (m5 b))))) -> m1 (m2 (m3 (m4 (m5 b)))) m >>>->== k = (---*) m >>>>>== k -(>>>>-==) :: (Monad m1, Monad2 m2, Monad3 m3, Monad4 m4, Monad5 m5) => m1 (m2 (m3 (m4 a))) -> (a -> m1 (m2 (m3 (m4 (m5 b))))) -> m1 (m2 (m3 (m4 (m5 b))))+(>>>>-==) :: (Monad m1, Monad m2, Commutative m2, Monad m3, Commutative m3, Monad m4, Commutative m4, Monad m5, Commutative m5) => m1 (m2 (m3 (m4 a))) -> (a -> m1 (m2 (m3 (m4 (m5 b))))) -> m1 (m2 (m3 (m4 (m5 b)))) m >>>>-== k = (----*) m >>>>>== k   -(---->~) :: (Monad m1, Monad2 m2, Monad3 m3, Monad4 m4, Monad5 m5) => m5 a -> m1 (m2 (m3 (m4 (m5 b)))) -> m1 (m2 (m3 (m4 (m5 b))))+(---->~) :: (Monad m1, Monad m2, Commutative m2, Monad m3, Commutative m3, Monad m4, Commutative m4, Monad m5, Commutative m5) => m5 a -> m1 (m2 (m3 (m4 (m5 b)))) -> m1 (m2 (m3 (m4 (m5 b)))) m ---->~ k = (****:) m >>>>>~ k -(--->-~) :: (Monad m1, Monad2 m2, Monad3 m3, Monad4 m4, Monad5 m5) => m4 a -> m1 (m2 (m3 (m4 (m5 b)))) -> m1 (m2 (m3 (m4 (m5 b))))+(--->-~) :: (Monad m1, Monad m2, Commutative m2, Monad m3, Commutative m3, Monad m4, Commutative m4, Monad m5, Commutative m5) => m4 a -> m1 (m2 (m3 (m4 (m5 b)))) -> m1 (m2 (m3 (m4 (m5 b)))) m --->-~ k = (***-*) m >>>>>~ k -(-->--~) :: (Monad m1, Monad2 m2, Monad3 m3, Monad4 m4, Monad5 m5) => m3 a -> m1 (m2 (m3 (m4 (m5 b)))) -> m1 (m2 (m3 (m4 (m5 b))))+(-->--~) :: (Monad m1, Monad m2, Commutative m2, Monad m3, Commutative m3, Monad m4, Commutative m4, Monad m5, Commutative m5) => m3 a -> m1 (m2 (m3 (m4 (m5 b)))) -> m1 (m2 (m3 (m4 (m5 b)))) m -->--~ k = (**-**) m >>>>>~ k -(->---~) :: (Monad m1, Monad2 m2, Monad3 m3, Monad4 m4, Monad5 m5) => m2 a -> m1 (m2 (m3 (m4 (m5 b)))) -> m1 (m2 (m3 (m4 (m5 b))))+(->---~) :: (Monad m1, Monad m2, Commutative m2, Monad m3, Commutative m3, Monad m4, Commutative m4, Monad m5, Commutative m5) => m2 a -> m1 (m2 (m3 (m4 (m5 b)))) -> m1 (m2 (m3 (m4 (m5 b)))) m ->---~ k = (*-***) m >>>>>~ k -(>----~) :: (Monad m1, Monad2 m2, Monad3 m3, Monad4 m4, Monad5 m5) => m1 a -> m1 (m2 (m3 (m4 (m5 b)))) -> m1 (m2 (m3 (m4 (m5 b))))+(>----~) :: (Monad m1, Monad m2, Commutative m2, Monad m3, Commutative m3, Monad m4, Commutative m4, Monad m5, Commutative m5) => m1 a -> m1 (m2 (m3 (m4 (m5 b)))) -> m1 (m2 (m3 (m4 (m5 b)))) m >----~ k = (-****) m >>>>>~ k  -(--->>~) :: (Monad m1, Monad2 m2, Monad3 m3, Monad4 m4, Monad5 m5) => m4 (m5 a) -> m1 (m2 (m3 (m4 (m5 b)))) -> m1 (m2 (m3 (m4 (m5 b))))+(--->>~) :: (Monad m1, Monad m2, Commutative m2, Monad m3, Commutative m3, Monad m4, Commutative m4, Monad m5, Commutative m5) => m4 (m5 a) -> m1 (m2 (m3 (m4 (m5 b)))) -> m1 (m2 (m3 (m4 (m5 b)))) m --->>~ k = (***:) m >>>>>~ k -(-->->~) :: (Monad m1, Monad2 m2, Monad3 m3, Monad4 m4, Monad5 m5) => m3 (m5 a) -> m1 (m2 (m3 (m4 (m5 b)))) -> m1 (m2 (m3 (m4 (m5 b))))+(-->->~) :: (Monad m1, Monad m2, Commutative m2, Monad m3, Commutative m3, Monad m4, Commutative m4, Monad m5, Commutative m5) => m3 (m5 a) -> m1 (m2 (m3 (m4 (m5 b)))) -> m1 (m2 (m3 (m4 (m5 b)))) m -->->~ k = (**-*) m >>>>>~ k -(->-->~) :: (Monad m1, Monad2 m2, Monad3 m3, Monad4 m4, Monad5 m5) => m2 (m5 a) -> m1 (m2 (m3 (m4 (m5 b)))) -> m1 (m2 (m3 (m4 (m5 b))))+(->-->~) :: (Monad m1, Monad m2, Commutative m2, Monad m3, Commutative m3, Monad m4, Commutative m4, Monad m5, Commutative m5) => m2 (m5 a) -> m1 (m2 (m3 (m4 (m5 b)))) -> m1 (m2 (m3 (m4 (m5 b)))) m ->-->~ k = (*-**) m >>>>>~ k -(>--->~) :: (Monad m1, Monad2 m2, Monad3 m3, Monad4 m4, Monad5 m5) => m1 (m5 a) -> m1 (m2 (m3 (m4 (m5 b)))) -> m1 (m2 (m3 (m4 (m5 b))))+(>--->~) :: (Monad m1, Monad m2, Commutative m2, Monad m3, Commutative m3, Monad m4, Commutative m4, Monad m5, Commutative m5) => m1 (m5 a) -> m1 (m2 (m3 (m4 (m5 b)))) -> m1 (m2 (m3 (m4 (m5 b)))) m >--->~ k = (-***) m >>>>>~ k -(>-->-~) :: (Monad m1, Monad2 m2, Monad3 m3, Monad4 m4, Monad5 m5) => m1 (m4 a) -> m1 (m2 (m3 (m4 (m5 b)))) -> m1 (m2 (m3 (m4 (m5 b))))+(>-->-~) :: (Monad m1, Monad m2, Commutative m2, Monad m3, Commutative m3, Monad m4, Commutative m4, Monad m5, Commutative m5) => m1 (m4 a) -> m1 (m2 (m3 (m4 (m5 b)))) -> m1 (m2 (m3 (m4 (m5 b)))) m >-->-~ k = (-**-*) m >>>>>~ k -(->->-~) :: (Monad m1, Monad2 m2, Monad3 m3, Monad4 m4, Monad5 m5) => m2 (m4 a) -> m1 (m2 (m3 (m4 (m5 b)))) -> m1 (m2 (m3 (m4 (m5 b))))+(->->-~) :: (Monad m1, Monad m2, Commutative m2, Monad m3, Commutative m3, Monad m4, Commutative m4, Monad m5, Commutative m5) => m2 (m4 a) -> m1 (m2 (m3 (m4 (m5 b)))) -> m1 (m2 (m3 (m4 (m5 b)))) m ->->-~ k = (*-*-*) m >>>>>~ k -(-->>-~) :: (Monad m1, Monad2 m2, Monad3 m3, Monad4 m4, Monad5 m5) => m3 (m4 a) -> m1 (m2 (m3 (m4 (m5 b)))) -> m1 (m2 (m3 (m4 (m5 b))))+(-->>-~) :: (Monad m1, Monad m2, Commutative m2, Monad m3, Commutative m3, Monad m4, Commutative m4, Monad m5, Commutative m5) => m3 (m4 a) -> m1 (m2 (m3 (m4 (m5 b)))) -> m1 (m2 (m3 (m4 (m5 b)))) m -->>-~ k = (**--*) m >>>>>~ k -(->>--~) :: (Monad m1, Monad2 m2, Monad3 m3, Monad4 m4, Monad5 m5) => m2 (m3 a) -> m1 (m2 (m3 (m4 (m5 b)))) -> m1 (m2 (m3 (m4 (m5 b))))+(->>--~) :: (Monad m1, Monad m2, Commutative m2, Monad m3, Commutative m3, Monad m4, Commutative m4, Monad m5, Commutative m5) => m2 (m3 a) -> m1 (m2 (m3 (m4 (m5 b)))) -> m1 (m2 (m3 (m4 (m5 b)))) m ->>--~ k = (*--**) m >>>>>~ k -(>->--~) :: (Monad m1, Monad2 m2, Monad3 m3, Monad4 m4, Monad5 m5) => m1 (m3 a) -> m1 (m2 (m3 (m4 (m5 b)))) -> m1 (m2 (m3 (m4 (m5 b))))+(>->--~) :: (Monad m1, Monad m2, Commutative m2, Monad m3, Commutative m3, Monad m4, Commutative m4, Monad m5, Commutative m5) => m1 (m3 a) -> m1 (m2 (m3 (m4 (m5 b)))) -> m1 (m2 (m3 (m4 (m5 b)))) m >->--~ k = (-*-**) m >>>>>~ k -(>>---~) :: (Monad m1, Monad2 m2, Monad3 m3, Monad4 m4, Monad5 m5) => m1 (m2 a) -> m1 (m2 (m3 (m4 (m5 b)))) -> m1 (m2 (m3 (m4 (m5 b))))+(>>---~) :: (Monad m1, Monad m2, Commutative m2, Monad m3, Commutative m3, Monad m4, Commutative m4, Monad m5, Commutative m5) => m1 (m2 a) -> m1 (m2 (m3 (m4 (m5 b)))) -> m1 (m2 (m3 (m4 (m5 b)))) m >>---~ k = (--***) m >>>>>~ k  -(-->>>~) :: (Monad m1, Monad2 m2, Monad3 m3, Monad4 m4, Monad5 m5) => m3 (m4 (m5 a)) -> m1 (m2 (m3 (m4 (m5 b)))) -> m1 (m2 (m3 (m4 (m5 b))))+(-->>>~) :: (Monad m1, Monad m2, Commutative m2, Monad m3, Commutative m3, Monad m4, Commutative m4, Monad m5, Commutative m5) => m3 (m4 (m5 a)) -> m1 (m2 (m3 (m4 (m5 b)))) -> m1 (m2 (m3 (m4 (m5 b)))) m -->>>~ k = (**:) m >>>>>~ k -(->->>~) :: (Monad m1, Monad2 m2, Monad3 m3, Monad4 m4, Monad5 m5) => m2 (m4 (m5 a)) -> m1 (m2 (m3 (m4 (m5 b)))) -> m1 (m2 (m3 (m4 (m5 b))))+(->->>~) :: (Monad m1, Monad m2, Commutative m2, Monad m3, Commutative m3, Monad m4, Commutative m4, Monad m5, Commutative m5) => m2 (m4 (m5 a)) -> m1 (m2 (m3 (m4 (m5 b)))) -> m1 (m2 (m3 (m4 (m5 b)))) m ->->>~ k = (*-*) m >>>>>~ k -(>-->>~) :: (Monad m1, Monad2 m2, Monad3 m3, Monad4 m4, Monad5 m5) => m1 (m4 (m5 a)) -> m1 (m2 (m3 (m4 (m5 b)))) -> m1 (m2 (m3 (m4 (m5 b))))+(>-->>~) :: (Monad m1, Monad m2, Commutative m2, Monad m3, Commutative m3, Monad m4, Commutative m4, Monad m5, Commutative m5) => m1 (m4 (m5 a)) -> m1 (m2 (m3 (m4 (m5 b)))) -> m1 (m2 (m3 (m4 (m5 b)))) m >-->>~ k = (-**) m >>>>>~ k -(>->->~) :: (Monad m1, Monad2 m2, Monad3 m3, Monad4 m4, Monad5 m5) => m1 (m3 (m5 a)) -> m1 (m2 (m3 (m4 (m5 b)))) -> m1 (m2 (m3 (m4 (m5 b))))+(>->->~) :: (Monad m1, Monad m2, Commutative m2, Monad m3, Commutative m3, Monad m4, Commutative m4, Monad m5, Commutative m5) => m1 (m3 (m5 a)) -> m1 (m2 (m3 (m4 (m5 b)))) -> m1 (m2 (m3 (m4 (m5 b)))) m >->->~ k = (-*-*) m >>>>>~ k -(->>->~) :: (Monad m1, Monad2 m2, Monad3 m3, Monad4 m4, Monad5 m5) => m2 (m3 (m5 a)) -> m1 (m2 (m3 (m4 (m5 b)))) -> m1 (m2 (m3 (m4 (m5 b))))+(->>->~) :: (Monad m1, Monad m2, Commutative m2, Monad m3, Commutative m3, Monad m4, Commutative m4, Monad m5, Commutative m5) => m2 (m3 (m5 a)) -> m1 (m2 (m3 (m4 (m5 b)))) -> m1 (m2 (m3 (m4 (m5 b)))) m ->>->~ k = (*--*) m >>>>>~ k -(>>-->~) :: (Monad m1, Monad2 m2, Monad3 m3, Monad4 m4, Monad5 m5) => m1 (m2 (m5 a)) -> m1 (m2 (m3 (m4 (m5 b)))) -> m1 (m2 (m3 (m4 (m5 b))))+(>>-->~) :: (Monad m1, Monad m2, Commutative m2, Monad m3, Commutative m3, Monad m4, Commutative m4, Monad m5, Commutative m5) => m1 (m2 (m5 a)) -> m1 (m2 (m3 (m4 (m5 b)))) -> m1 (m2 (m3 (m4 (m5 b)))) m >>-->~ k = (--**) m >>>>>~ k -(>>->-~) :: (Monad m1, Monad2 m2, Monad3 m3, Monad4 m4, Monad5 m5) => m1 (m2 (m4 a)) -> m1 (m2 (m3 (m4 (m5 b)))) -> m1 (m2 (m3 (m4 (m5 b))))+(>>->-~) :: (Monad m1, Monad m2, Commutative m2, Monad m3, Commutative m3, Monad m4, Commutative m4, Monad m5, Commutative m5) => m1 (m2 (m4 a)) -> m1 (m2 (m3 (m4 (m5 b)))) -> m1 (m2 (m3 (m4 (m5 b)))) m >>->-~ k = (--*-*) m >>>>>~ k -(>->>-~) :: (Monad m1, Monad2 m2, Monad3 m3, Monad4 m4, Monad5 m5) => m1 (m3 (m4 a)) -> m1 (m2 (m3 (m4 (m5 b)))) -> m1 (m2 (m3 (m4 (m5 b))))+(>->>-~) :: (Monad m1, Monad m2, Commutative m2, Monad m3, Commutative m3, Monad m4, Commutative m4, Monad m5, Commutative m5) => m1 (m3 (m4 a)) -> m1 (m2 (m3 (m4 (m5 b)))) -> m1 (m2 (m3 (m4 (m5 b)))) m >->>-~ k = (-*--*) m >>>>>~ k -(->>>-~) :: (Monad m1, Monad2 m2, Monad3 m3, Monad4 m4, Monad5 m5) => m2 (m3 (m4 a)) -> m1 (m2 (m3 (m4 (m5 b)))) -> m1 (m2 (m3 (m4 (m5 b))))+(->>>-~) :: (Monad m1, Monad m2, Commutative m2, Monad m3, Commutative m3, Monad m4, Commutative m4, Monad m5, Commutative m5) => m2 (m3 (m4 a)) -> m1 (m2 (m3 (m4 (m5 b)))) -> m1 (m2 (m3 (m4 (m5 b)))) m ->>>-~ k = (*---*) m >>>>>~ k -(>>>--~) :: (Monad m1, Monad2 m2, Monad3 m3, Monad4 m4, Monad5 m5) => m1 (m2 (m3 a)) -> m1 (m2 (m3 (m4 (m5 b)))) -> m1 (m2 (m3 (m4 (m5 b))))+(>>>--~) :: (Monad m1, Monad m2, Commutative m2, Monad m3, Commutative m3, Monad m4, Commutative m4, Monad m5, Commutative m5) => m1 (m2 (m3 a)) -> m1 (m2 (m3 (m4 (m5 b)))) -> m1 (m2 (m3 (m4 (m5 b)))) m >>>--~ k = (---**) m >>>>>~ k  -(->>>>~) :: (Monad m1, Monad2 m2, Monad3 m3, Monad4 m4, Monad5 m5) => m2 (m3 (m4 (m5 a))) -> m1 (m2 (m3 (m4 (m5 b)))) -> m1 (m2 (m3 (m4 (m5 b))))+(->>>>~) :: (Monad m1, Monad m2, Commutative m2, Monad m3, Commutative m3, Monad m4, Commutative m4, Monad m5, Commutative m5) => m2 (m3 (m4 (m5 a))) -> m1 (m2 (m3 (m4 (m5 b)))) -> m1 (m2 (m3 (m4 (m5 b)))) m ->>>>~ k = (*:) m >>>>>~ k -(>->>>~) :: (Monad m1, Monad2 m2, Monad3 m3, Monad4 m4, Monad5 m5) => m1 (m3 (m4 (m5 a))) -> m1 (m2 (m3 (m4 (m5 b)))) -> m1 (m2 (m3 (m4 (m5 b))))+(>->>>~) :: (Monad m1, Monad m2, Commutative m2, Monad m3, Commutative m3, Monad m4, Commutative m4, Monad m5, Commutative m5) => m1 (m3 (m4 (m5 a))) -> m1 (m2 (m3 (m4 (m5 b)))) -> m1 (m2 (m3 (m4 (m5 b)))) m >->>>~ k = (-*) m >>>>>~ k -(>>->>~) :: (Monad m1, Monad2 m2, Monad3 m3, Monad4 m4, Monad5 m5) => m1 (m2 (m4 (m5 a))) -> m1 (m2 (m3 (m4 (m5 b)))) -> m1 (m2 (m3 (m4 (m5 b))))+(>>->>~) :: (Monad m1, Monad m2, Commutative m2, Monad m3, Commutative m3, Monad m4, Commutative m4, Monad m5, Commutative m5) => m1 (m2 (m4 (m5 a))) -> m1 (m2 (m3 (m4 (m5 b)))) -> m1 (m2 (m3 (m4 (m5 b)))) m >>->>~ k = (--*) m >>>>>~ k -(>>>->~) :: (Monad m1, Monad2 m2, Monad3 m3, Monad4 m4, Monad5 m5) => m1 (m2 (m3 (m5 a))) -> m1 (m2 (m3 (m4 (m5 b)))) -> m1 (m2 (m3 (m4 (m5 b))))+(>>>->~) :: (Monad m1, Monad m2, Commutative m2, Monad m3, Commutative m3, Monad m4, Commutative m4, Monad m5, Commutative m5) => m1 (m2 (m3 (m5 a))) -> m1 (m2 (m3 (m4 (m5 b)))) -> m1 (m2 (m3 (m4 (m5 b)))) m >>>->~ k = (---*) m >>>>>~ k -(>>>>-~) :: (Monad m1, Monad2 m2, Monad3 m3, Monad4 m4, Monad5 m5) => m1 (m2 (m3 (m4 a))) -> m1 (m2 (m3 (m4 (m5 b)))) -> m1 (m2 (m3 (m4 (m5 b))))+(>>>>-~) :: (Monad m1, Monad m2, Commutative m2, Monad m3, Commutative m3, Monad m4, Commutative m4, Monad m5, Commutative m5) => m1 (m2 (m3 (m4 a))) -> m1 (m2 (m3 (m4 (m5 b)))) -> m1 (m2 (m3 (m4 (m5 b)))) m >>>>-~ k = (----*) m >>>>>~ k --instance Monad5 Maybe where-    mv >>>>>== f = -        mv >>>>== \mv ->-        case mv of -            Nothing -> (****:) Nothing-            Just a  -> f a--instance Monad5 [] where-    mv >>>>>== f = -        mv >>>>== \xs -> -        foldr (\x acc -> f x <<<<$|(++)|*>>>> acc) ((****:) []) xs --instance Monad5 (Either e) where-    mv >>>>>== f = -        mv >>>>== \mv -> -        case mv of-            Left l  -> (****:) (Left l)-            Right r -> f r--instance Monad5 (Except e) where-    m >>>>>== f = (ExceptT . Identity |$>>>>) $ (runExcept |$>>>> m) >>>>>== runExcept |$>>>>> f--instance (Monoid w) => Monad5 (Writer w) where-    mv >>>>>== f = -        mv >>>>== \x -> runWriterT x >- \(Identity (a, w)) ->-        f a <<<<$| (\x -> runWriterT x >- \(Identity (b, w')) ->-                          WriterT $ Identity (b, w <> w')) 
DeepControl/Monad/Trans.hs view
@@ -197,31 +197,28 @@ -- Level-2  class MonadTrans2 t where-    liftT2 :: (Monad m1, Monad2 m2) => m1 (m2 a) -> t m1 m2 a+    liftT2 :: (Monad m1, Monad m2) => m1 (m2 a) -> t m1 m2 a  liftTT2-  :: (Monad m1, Monad (t2 m1 m2), Monad2 m2,+  :: (Monad m1, Monad (t2 m1 m2), Monad m2,       MonadTrans t1, MonadTrans2 t2) =>      m1 (m2 a) -> t1 (t2 m1 m2) a liftTT2 = liftT.liftT2  liftTTT2-  :: (Monad m1, Monad (t1 (t2 m1 m2)), Monad (t2 m1 m2), -      Monad2 m2, +  :: (Monad m1, Monad (t1 (t2 m1 m2)), Monad (t2 m1 m2), Monad m2,        MonadTrans t, MonadTrans t1, MonadTrans2 t2) =>      m1 (m2 a) -> t (t1 (t2 m1 m2)) a liftTTT2 = liftT.liftT.liftT2  liftTTTT2-  :: (Monad m1, Monad (t1 (t1' (t2 m1 m2))), Monad (t1' (t2 m1 m2)), Monad (t2 m1 m2), -      Monad2 m2, +  :: (Monad m1, Monad (t1 (t1' (t2 m1 m2))), Monad (t1' (t2 m1 m2)), Monad (t2 m1 m2), Monad m2,        MonadTrans t, MonadTrans t1, MonadTrans t1', MonadTrans2 t2) =>      m1 (m2 a) -> t (t1 (t1' (t2 m1 m2))) a liftTTTT2 = liftT.liftT.liftT.liftT2  liftTTTTT2-  :: (Monad m1, Monad (t1 (t1' (t1'' (t2 m1 m2)))), Monad (t1' (t1'' (t2 m1 m2))), Monad (t1'' (t2 m1 m2)), Monad (t2 m1 m2), -      Monad2 m2, +  :: (Monad m1, Monad (t1 (t1' (t1'' (t2 m1 m2)))), Monad (t1' (t1'' (t2 m1 m2))), Monad (t1'' (t2 m1 m2)), Monad (t2 m1 m2), Monad m2,        MonadTrans t, MonadTrans t1, MonadTrans t1', MonadTrans t1'', MonadTrans2 t2) =>      m1 (m2 a) -> t (t1 (t1' (t1'' (t2 m1 m2)))) a liftTTTTT2 = liftT.liftT.liftT.liftT.liftT2@@ -248,10 +245,10 @@ infixl 3  |-*|, |*-|, |**|  class (MonadTransCover (Trans2Down t2)) => MonadTransCover2 t2 where-    (|-*|) :: (Monad m1, Monad2 m2) => (Trans2Down t2) m1 a -> t2 m1 m2 a-    (|*-|) :: (Monad m1, Monad2 m2) => (Trans2Down t2) m2 a -> t2 m1 m2 a+    (|-*|) :: (Monad m1, Monad m2) => (Trans2Down t2) m1 a -> t2 m1 m2 a+    (|*-|) :: (Monad m1, Monad m2) => (Trans2Down t2) m2 a -> t2 m1 m2 a -(|**|) :: (Monad m1, Monad2 m2, MonadTransCover2 t2) => +(|**|) :: (Monad m1, Monad m2, MonadTransCover2 t2) =>            (M_ t2) a -> t2 m1 m2 a (|**|) = (|*-|) . (|*|)  @@ -268,30 +265,28 @@ -- Level-3  class MonadTrans3 t where-    liftT3 :: (Monad m1, Monad2 m2, Monad3 m3) => m1 (m2 (m3 a)) -> t m1 m2 m3 a+    liftT3 :: (Monad m1, Monad m2, Monad m3) => m1 (m2 (m3 a)) -> t m1 m2 m3 a  liftTT3-  :: (Monad m1, Monad (t3 m1 m2 m3), Monad2 m2, Monad3 m3,+  :: (Monad m1, Monad (t3 m1 m2 m3), Monad m2, Monad m3,       MonadTrans t, MonadTrans3 t3) =>      m1 (m2 (m3 a)) -> t (t3 m1 m2 m3) a liftTT3 = liftT.liftT3  liftTTT3-  :: (Monad m1, Monad (t1 (t3 m1 m2 m3)), Monad (t3 m1 m2 m3), Monad2 m2, Monad3 m3, +  :: (Monad m1, Monad (t1 (t3 m1 m2 m3)), Monad (t3 m1 m2 m3), Monad m2, Monad m3,        MonadTrans t, MonadTrans t1, MonadTrans3 t3) =>      m1 (m2 (m3 a)) -> t (t1 (t3 m1 m2 m3)) a liftTTT3 = liftT.liftT.liftT3  liftTTTT3-  :: (Monad m1, Monad (t1 (t1' (t3 m1 m2 m3))), Monad (t1' (t3 m1 m2 m3)), Monad (t3 m1 m2 m3),-      Monad2 m2, Monad3 m3, +  :: (Monad m1, Monad (t1 (t1' (t3 m1 m2 m3))), Monad (t1' (t3 m1 m2 m3)), Monad (t3 m1 m2 m3), Monad m2, Monad m3,        MonadTrans t, MonadTrans t1, MonadTrans t1', MonadTrans3 t3) =>      m1 (m2 (m3 a)) -> t (t1 (t1' (t3 m1 m2 m3))) a liftTTTT3 = liftT.liftT.liftT.liftT3  liftTTTTT3-  :: (Monad m1, Monad (t1 (t1' (t1'' (t3 m1 m2 m3)))), Monad (t1' (t1'' (t3 m1 m2 m3))), Monad (t1'' (t3 m1 m2 m3)), Monad (t3 m1 m2 m3), -      Monad2 m2, Monad3 m3,+  :: (Monad m1, Monad (t1 (t1' (t1'' (t3 m1 m2 m3)))), Monad (t1' (t1'' (t3 m1 m2 m3))), Monad (t1'' (t3 m1 m2 m3)), Monad (t3 m1 m2 m3), Monad m2, Monad m3,       MonadTrans t, MonadTrans t1, MonadTrans t1', MonadTrans t1'', MonadTrans3 t3) =>      m1 (m2 (m3 a)) -> t (t1 (t1' (t1'' (t3 m1 m2 m3)))) a liftTTTTT3 = liftT.liftT.liftT.liftT.liftT3@@ -319,22 +314,22 @@  infixl 3  |--*|, |-*-|, |*--| class (MonadTransCover2 (Trans3Down t3)) => MonadTransCover3 t3 where-    (|--*|) :: (Monad m1, Monad2 m2, Monad3 m3) => (Trans3Down t3) m1 m2 a -> t3 m1 m2 m3 a-    (|-*-|) :: (Monad m1, Monad2 m2, Monad3 m3) => (Trans3Down t3) m1 m3 a -> t3 m1 m2 m3 a-    (|*--|) :: (Monad m1, Monad2 m2, Monad3 m3) => (Trans3Down t3) m2 m3 a -> t3 m1 m2 m3 a+    (|--*|) :: (Monad m1, Monad m2, Monad m3) => (Trans3Down t3) m1 m2 a -> t3 m1 m2 m3 a+    (|-*-|) :: (Monad m1, Monad m2, Monad m3) => (Trans3Down t3) m1 m3 a -> t3 m1 m2 m3 a+    (|*--|) :: (Monad m1, Monad m2, Monad m3) => (Trans3Down t3) m2 m3 a -> t3 m1 m2 m3 a  infixl 3  |***|-(|***|) :: (Monad m1, Monad2 m2, Monad3 m3, MonadTransCover3 t3) => +(|***|) :: (Monad m1, Monad m2, Monad m3, MonadTransCover3 t3) =>             (M__ t3) a -> t3 m1 m2 m3 a infixl 3  |-**|, |*-*|, |**-| (|***|) = (|--*|) . (|**|)-(|-**|) :: (Monad m1, Monad2 m2, Monad3 m3, MonadTransCover3 t3) => +(|-**|) :: (Monad m1, Monad m2, Monad m3, MonadTransCover3 t3) =>             (T__ t3) m1 a -> t3 m1 m2 m3 a (|-**|) = (|--*|) . (|-*|)-(|*-*|) :: (Monad m1, Monad2 m2, Monad3 m3, MonadTransCover3 t3) => +(|*-*|) :: (Monad m1, Monad m2, Monad m3, MonadTransCover3 t3) =>             (T__ t3) m2 a -> t3 m1 m2 m3 a (|*-*|) = (|--*|) . (|*-|)-(|**-|) :: (Monad m1, Monad2 m2, Monad3 m3, MonadTransCover3 t3) => +(|**-|) :: (Monad m1, Monad m2, Monad m3, MonadTransCover3 t3) =>             (T__ t3) m3 a -> t3 m1 m2 m3 a (|**-|) = (|-*-|) . (|*-|) @@ -351,7 +346,7 @@ -- Level-4  class  MonadTrans4 t  where-    liftT4 :: (Monad m1, Monad2 m2, Monad3 m3, Monad4 m4) => m1 (m2 (m3 (m4 a))) -> t m1 m2 m3 m4 a+    liftT4 :: (Monad m1, Monad m2, Monad m3, Monad m4) => m1 (m2 (m3 (m4 a))) -> t m1 m2 m3 m4 a  class (MonadTrans3 (Trans4Down t4), MonadTrans4 t4) => MonadTrans4Down t4 where     type Trans4Down t4 :: (* -> *) -> (* -> *) -> (* -> *) -> * -> *@@ -378,45 +373,45 @@  infixl 3  |---*|, |--*-|, |-*--|, |*---| class (MonadTransCover3 (Trans4Down t4)) => MonadTransCover4 t4 where-    (|---*|) :: (Monad m1, Monad2 m2, Monad3 m3, Monad4 m4) => (Trans4Down t4) m1 m2 m3 a -> t4 m1 m2 m3 m4 a-    (|--*-|) :: (Monad m1, Monad2 m2, Monad3 m3, Monad4 m4) => (Trans4Down t4) m1 m2 m4 a -> t4 m1 m2 m3 m4 a-    (|-*--|) :: (Monad m1, Monad2 m2, Monad3 m3, Monad4 m4) => (Trans4Down t4) m1 m3 m4 a -> t4 m1 m2 m3 m4 a-    (|*---|) :: (Monad m1, Monad2 m2, Monad3 m3, Monad4 m4) => (Trans4Down t4) m2 m3 m4 a -> t4 m1 m2 m3 m4 a+    (|---*|) :: (Monad m1, Monad m2, Monad m3, Monad m4) => (Trans4Down t4) m1 m2 m3 a -> t4 m1 m2 m3 m4 a+    (|--*-|) :: (Monad m1, Monad m2, Monad m3, Monad m4) => (Trans4Down t4) m1 m2 m4 a -> t4 m1 m2 m3 m4 a+    (|-*--|) :: (Monad m1, Monad m2, Monad m3, Monad m4) => (Trans4Down t4) m1 m3 m4 a -> t4 m1 m2 m3 m4 a+    (|*---|) :: (Monad m1, Monad m2, Monad m3, Monad m4) => (Trans4Down t4) m2 m3 m4 a -> t4 m1 m2 m3 m4 a  infixl 3  |****|-(|****|) :: (Monad m1, Monad2 m2, Monad3 m3, Monad4 m4, MonadTransCover4 t4) => +(|****|) :: (Monad m1, Monad m2, Monad m3, Monad m4, MonadTransCover4 t4) =>              (M___ t4) a -> t4 m1 m2 m3 m4 a (|****|) = (|---*|) . (|***|) infixl 3  |--**|, |-*-*|, |-**-|, |*-*-|, |**--|, |*--*|-(|--**|) :: (Monad m1, Monad2 m2, Monad3 m3, Monad4 m4, MonadTransCover4 t4) => +(|--**|) :: (Monad m1, Monad m2, Monad m3, Monad m4, MonadTransCover4 t4) =>              (T2__ t4) m1 m2 a -> t4 m1 m2 m3 m4 a (|--**|) = (|---*|) . (|--*|)-(|-*-*|) :: (Monad m1, Monad2 m2, Monad3 m3, Monad4 m4, MonadTransCover4 t4) => +(|-*-*|) :: (Monad m1, Monad m2, Monad m3, Monad m4, MonadTransCover4 t4) =>              (T2__ t4) m1 m3 a -> t4 m1 m2 m3 m4 a (|-*-*|) = (|---*|) . (|-*-|)-(|-**-|) :: (Monad m1, Monad2 m2, Monad3 m3, Monad4 m4, MonadTransCover4 t4) => +(|-**-|) :: (Monad m1, Monad m2, Monad m3, Monad m4, MonadTransCover4 t4) =>              (T2__ t4) m1 m4 a -> t4 m1 m2 m3 m4 a (|-**-|) = (|--*-|) . (|-*-|)-(|*-*-|) :: (Monad m1, Monad2 m2, Monad3 m3, Monad4 m4, MonadTransCover4 t4) => +(|*-*-|) :: (Monad m1, Monad m2, Monad m3, Monad m4, MonadTransCover4 t4) =>              (T2__ t4) m2 m4 a -> t4 m1 m2 m3 m4 a (|*-*-|) = (|--*-|) . (|*--|)-(|**--|) :: (Monad m1, Monad2 m2, Monad3 m3, Monad4 m4, MonadTransCover4 t4) => +(|**--|) :: (Monad m1, Monad m2, Monad m3, Monad m4, MonadTransCover4 t4) =>              (T2__ t4) m3 m4 a -> t4 m1 m2 m3 m4 a (|**--|) = (|-*--|) . (|*--|)-(|*--*|) :: (Monad m1, Monad2 m2, Monad3 m3, Monad4 m4, MonadTransCover4 t4) => +(|*--*|) :: (Monad m1, Monad m2, Monad m3, Monad m4, MonadTransCover4 t4) =>              (T2__ t4) m2 m3 a -> t4 m1 m2 m3 m4 a (|*--*|) = (|---*|) . (|*--|) infixl 3  |-***|, |*-**|, |**-*|, |***-| -(|-***|) :: (Monad m1, Monad2 m2, Monad3 m3, Monad4 m4, MonadTransCover4 t4) => +(|-***|) :: (Monad m1, Monad m2, Monad m3, Monad m4, MonadTransCover4 t4) =>              (T___ t4) m1 a -> t4 m1 m2 m3 m4 a (|-***|) = (|---*|) . (|-**|)-(|*-**|) :: (Monad m1, Monad2 m2, Monad3 m3, Monad4 m4, MonadTransCover4 t4) => +(|*-**|) :: (Monad m1, Monad m2, Monad m3, Monad m4, MonadTransCover4 t4) =>              (T___ t4) m2 a -> t4 m1 m2 m3 m4 a (|*-**|) = (|---*|) . (|*-*|)-(|**-*|) :: (Monad m1, Monad2 m2, Monad3 m3, Monad4 m4, MonadTransCover4 t4) => +(|**-*|) :: (Monad m1, Monad m2, Monad m3, Monad m4, MonadTransCover4 t4) =>              (T___ t4) m3 a -> t4 m1 m2 m3 m4 a (|**-*|) = (|---*|) . (|**-|)-(|***-|) :: (Monad m1, Monad2 m2, Monad3 m3, Monad4 m4, MonadTransCover4 t4) => +(|***-|) :: (Monad m1, Monad m2, Monad m3, Monad m4, MonadTransCover4 t4) =>              (T___ t4) m4 a -> t4 m1 m2 m3 m4 a (|***-|) = (|--*-|) . (|**-|) @@ -433,7 +428,7 @@ -- Level-5  class MonadTrans5 t where-    liftT5 :: (Monad m1, Monad2 m2, Monad3 m3, Monad4 m4, Monad5 m5) => m1 (m2 (m3 (m4 (m5 a)))) -> t m1 m2 m3 m4 m5 a+    liftT5 :: (Monad m1, Monad m2, Monad m3, Monad m4, Monad m5) => m1 (m2 (m3 (m4 (m5 a)))) -> t m1 m2 m3 m4 m5 a  class (MonadTrans4 (Trans5Down t5), MonadTrans5 t5) => MonadTrans5Down t5 where     type Trans5Down t5 :: (* -> *) -> (* -> *) -> (* -> *) -> (* -> *) -> * -> *@@ -463,74 +458,74 @@  infixl 3  |----*|, |---*-|, |--*--|, |-*---|, |*----| class (MonadTransCover4 (Trans5Down t5)) => MonadTransCover5 t5 where-    (|----*|) :: (Monad m1, Monad2 m2, Monad3 m3, Monad4 m4, Monad5 m5) => (Trans5Down t5) m1 m2 m3 m4 a -> t5 m1 m2 m3 m4 m5 a-    (|---*-|) :: (Monad m1, Monad2 m2, Monad3 m3, Monad4 m4, Monad5 m5) => (Trans5Down t5) m1 m2 m3 m5 a -> t5 m1 m2 m3 m4 m5 a-    (|--*--|) :: (Monad m1, Monad2 m2, Monad3 m3, Monad4 m4, Monad5 m5) => (Trans5Down t5) m1 m2 m4 m5 a -> t5 m1 m2 m3 m4 m5 a-    (|-*---|) :: (Monad m1, Monad2 m2, Monad3 m3, Monad4 m4, Monad5 m5) => (Trans5Down t5) m1 m3 m4 m5 a -> t5 m1 m2 m3 m4 m5 a-    (|*----|) :: (Monad m1, Monad2 m2, Monad3 m3, Monad4 m4, Monad5 m5) => (Trans5Down t5) m2 m3 m4 m5 a -> t5 m1 m2 m3 m4 m5 a+    (|----*|) :: (Monad m1, Monad m2, Monad m3, Monad m4, Monad m5) => (Trans5Down t5) m1 m2 m3 m4 a -> t5 m1 m2 m3 m4 m5 a+    (|---*-|) :: (Monad m1, Monad m2, Monad m3, Monad m4, Monad m5) => (Trans5Down t5) m1 m2 m3 m5 a -> t5 m1 m2 m3 m4 m5 a+    (|--*--|) :: (Monad m1, Monad m2, Monad m3, Monad m4, Monad m5) => (Trans5Down t5) m1 m2 m4 m5 a -> t5 m1 m2 m3 m4 m5 a+    (|-*---|) :: (Monad m1, Monad m2, Monad m3, Monad m4, Monad m5) => (Trans5Down t5) m1 m3 m4 m5 a -> t5 m1 m2 m3 m4 m5 a+    (|*----|) :: (Monad m1, Monad m2, Monad m3, Monad m4, Monad m5) => (Trans5Down t5) m2 m3 m4 m5 a -> t5 m1 m2 m3 m4 m5 a  infixl 3  |*****|-(|*****|) :: (Monad m1, Monad2 m2, Monad3 m3, Monad4 m4, Monad5 m5, MonadTransCover5 t5) => +(|*****|) :: (Monad m1, Monad m2, Monad m3, Monad m4, Monad m5, MonadTransCover5 t5) =>              (M____ t5) a -> t5 m1 m2 m3 m4 m5 a (|*****|) = (|----*|) . (|****|) infixl 3  |---**|, |--*-*|, |-*--*|, |*---*|, |*--*-|, |*-*--|, |**---|-(|---**|) :: (Monad m1, Monad2 m2, Monad3 m3, Monad4 m4, Monad5 m5, MonadTransCover5 t5) => +(|---**|) :: (Monad m1, Monad m2, Monad m3, Monad m4, Monad m5, MonadTransCover5 t5) =>              (T3___ t5) m1 m2 m3 a -> t5 m1 m2 m3 m4 m5 a (|---**|) = (|----*|) . (|---*|)-(|--*-*|) :: (Monad m1, Monad2 m2, Monad3 m3, Monad4 m4, Monad5 m5, MonadTransCover5 t5) => +(|--*-*|) :: (Monad m1, Monad m2, Monad m3, Monad m4, Monad m5, MonadTransCover5 t5) =>              (T3___ t5) m1 m2 m4 a -> t5 m1 m2 m3 m4 m5 a (|--*-*|) = (|----*|) . (|--*-|)-(|-*--*|) :: (Monad m1, Monad2 m2, Monad3 m3, Monad4 m4, Monad5 m5, MonadTransCover5 t5) => +(|-*--*|) :: (Monad m1, Monad m2, Monad m3, Monad m4, Monad m5, MonadTransCover5 t5) =>              (T3___ t5) m1 m3 m4 a -> t5 m1 m2 m3 m4 m5 a (|-*--*|) = (|----*|) . (|-*--|)-(|*---*|) :: (Monad m1, Monad2 m2, Monad3 m3, Monad4 m4, Monad5 m5, MonadTransCover5 t5) => +(|*---*|) :: (Monad m1, Monad m2, Monad m3, Monad m4, Monad m5, MonadTransCover5 t5) =>              (T3___ t5) m2 m3 m4 a -> t5 m1 m2 m3 m4 m5 a (|*---*|) = (|----*|) . (|*---|)-(|*--*-|) :: (Monad m1, Monad2 m2, Monad3 m3, Monad4 m4, Monad5 m5, MonadTransCover5 t5) => +(|*--*-|) :: (Monad m1, Monad m2, Monad m3, Monad m4, Monad m5, MonadTransCover5 t5) =>              (T3___ t5) m2 m3 m5 a -> t5 m1 m2 m3 m4 m5 a (|*--*-|) = (|---*-|) . (|*---|)-(|*-*--|) :: (Monad m1, Monad2 m2, Monad3 m3, Monad4 m4, Monad5 m5, MonadTransCover5 t5) => +(|*-*--|) :: (Monad m1, Monad m2, Monad m3, Monad m4, Monad m5, MonadTransCover5 t5) =>              (T3___ t5) m2 m4 m5 a -> t5 m1 m2 m3 m4 m5 a (|*-*--|) = (|--*--|) . (|*---|)-(|**---|) :: (Monad m1, Monad2 m2, Monad3 m3, Monad4 m4, Monad5 m5, MonadTransCover5 t5) => +(|**---|) :: (Monad m1, Monad m2, Monad m3, Monad m4, Monad m5, MonadTransCover5 t5) =>              (T3___ t5) m3 m4 m5 a -> t5 m1 m2 m3 m4 m5 a (|**---|) = (|-*---|) . (|*---|) infixl 3  |--***|, |-*-**|, |*--**|, |*-*-*|, |**--*|, |**-*-|, |***--|-(|--***|) :: (Monad m1, Monad2 m2, Monad3 m3, Monad4 m4, Monad5 m5, MonadTransCover5 t5) => +(|--***|) :: (Monad m1, Monad m2, Monad m3, Monad m4, Monad m5, MonadTransCover5 t5) =>              (T2___ t5) m1 m2 a -> t5 m1 m2 m3 m4 m5 a (|--***|) = (|----*|) . (|--**|)-(|-*-**|) :: (Monad m1, Monad2 m2, Monad3 m3, Monad4 m4, Monad5 m5, MonadTransCover5 t5) => +(|-*-**|) :: (Monad m1, Monad m2, Monad m3, Monad m4, Monad m5, MonadTransCover5 t5) =>              (T2___ t5) m1 m3 a -> t5 m1 m2 m3 m4 m5 a (|-*-**|) = (|----*|) . (|-*-*|)-(|*--**|) :: (Monad m1, Monad2 m2, Monad3 m3, Monad4 m4, Monad5 m5, MonadTransCover5 t5) => +(|*--**|) :: (Monad m1, Monad m2, Monad m3, Monad m4, Monad m5, MonadTransCover5 t5) =>              (T2___ t5) m2 m3 a -> t5 m1 m2 m3 m4 m5 a (|*--**|) = (|----*|) . (|*--*|)-(|*-*-*|) :: (Monad m1, Monad2 m2, Monad3 m3, Monad4 m4, Monad5 m5, MonadTransCover5 t5) => +(|*-*-*|) :: (Monad m1, Monad m2, Monad m3, Monad m4, Monad m5, MonadTransCover5 t5) =>              (T2___ t5) m2 m4 a -> t5 m1 m2 m3 m4 m5 a (|*-*-*|) = (|----*|) . (|*-*-|)-(|**--*|) :: (Monad m1, Monad2 m2, Monad3 m3, Monad4 m4, Monad5 m5, MonadTransCover5 t5) => +(|**--*|) :: (Monad m1, Monad m2, Monad m3, Monad m4, Monad m5, MonadTransCover5 t5) =>              (T2___ t5) m3 m4 a -> t5 m1 m2 m3 m4 m5 a (|**--*|) = (|----*|) . (|**--|)-(|**-*-|) :: (Monad m1, Monad2 m2, Monad3 m3, Monad4 m4, Monad5 m5, MonadTransCover5 t5) => +(|**-*-|) :: (Monad m1, Monad m2, Monad m3, Monad m4, Monad m5, MonadTransCover5 t5) =>              (T2___ t5) m3 m5 a -> t5 m1 m2 m3 m4 m5 a (|**-*-|) = (|---*-|) . (|**--|)-(|***--|) :: (Monad m1, Monad2 m2, Monad3 m3, Monad4 m4, Monad5 m5, MonadTransCover5 t5) => +(|***--|) :: (Monad m1, Monad m2, Monad m3, Monad m4, Monad m5, MonadTransCover5 t5) =>              (T2___ t5) m4 m5 a -> t5 m1 m2 m3 m4 m5 a (|***--|) = (|--*--|) . (|**--|) infixl 3  |-****|, |*-***|, |**-**|, |***-*|, |****-|-(|-****|) :: (Monad m1, Monad2 m2, Monad3 m3, Monad4 m4, Monad5 m5, MonadTransCover5 t5) => +(|-****|) :: (Monad m1, Monad m2, Monad m3, Monad m4, Monad m5, MonadTransCover5 t5) =>              (T____ t5) m1 a -> t5 m1 m2 m3 m4 m5 a (|-****|) = (|----*|) . (|-***|)-(|*-***|) :: (Monad m1, Monad2 m2, Monad3 m3, Monad4 m4, Monad5 m5, MonadTransCover5 t5) => +(|*-***|) :: (Monad m1, Monad m2, Monad m3, Monad m4, Monad m5, MonadTransCover5 t5) =>              (T____ t5) m2 a -> t5 m1 m2 m3 m4 m5 a (|*-***|) = (|----*|) . (|*-**|)-(|**-**|) :: (Monad m1, Monad2 m2, Monad3 m3, Monad4 m4, Monad5 m5, MonadTransCover5 t5) => +(|**-**|) :: (Monad m1, Monad m2, Monad m3, Monad m4, Monad m5, MonadTransCover5 t5) =>              (T____ t5) m3 a -> t5 m1 m2 m3 m4 m5 a (|**-**|) = (|----*|) . (|**-*|)-(|***-*|) :: (Monad m1, Monad2 m2, Monad3 m3, Monad4 m4, Monad5 m5, MonadTransCover5 t5) => +(|***-*|) :: (Monad m1, Monad m2, Monad m3, Monad m4, Monad m5, MonadTransCover5 t5) =>              (T____ t5) m4 a -> t5 m1 m2 m3 m4 m5 a (|***-*|) = (|----*|) . (|***-|)-(|****-|) :: (Monad m1, Monad2 m2, Monad3 m3, Monad4 m4, Monad5 m5, MonadTransCover5 t5) => +(|****-|) :: (Monad m1, Monad m2, Monad m3, Monad m4, Monad m5, MonadTransCover5 t5) =>              (T____ t5) m5 a -> t5 m1 m2 m3 m4 m5 a (|****-|) = (|---*-|) . (|***-|) @@ -598,7 +593,8 @@ Here is a monad transformer example showing how to use trans-cover functions.  >import DeepControl.Applicative ((|$>))->import DeepControl.Monad (Monad2)+>import DeepControl.Commutative (Commutative)+>import DeepControl.Monad (Monad) >import DeepControl.Monad.Morph ((|>|)) >import DeepControl.Monad.Trans (liftT, (|*|), (|-*|), (|*-|)) >import DeepControl.Monad.Trans.Identity@@ -622,12 +618,12 @@ >    n <- get >    liftT $ tell [n] >->program ::               StateT Int (IdentityT2 IO (Writer [Int])) ()  -- StateT-IdentityT2-IO-Writer monad, a level-2 monad-transform+>program ::                             StateT Int (IdentityT2 IO (Writer [Int])) () -- StateT-IdentityT2-IO-Writer monad, a level-2 monad-transform >program = replicateM_ 4 $ do->    ((|-*|).liftT) |>| tock                                            -- (|-*|) is a level-2 trans-cover function, analogous for (-*)->        :: (Monad2 m) => StateT Int (IdentityT2 IO m             ) ()->    ((|*-|).liftT) |>| save                                            -- (|*-|) is a level-2 trans-cover function, analogous for (*:)->        :: (Monad  m) => StateT Int (IdentityT2 m  (Writer [Int])) ()+>    ((|-*|).liftT) |>| tock                                                         -- (|-*|) is a level-2 trans-cover function, analogous for (-*)+>        :: (Monad m, Commutative m) => StateT Int (IdentityT2 IO m             ) ()+>    ((|*-|).liftT) |>| save                                                         -- (|*-|) is a level-2 trans-cover function, analogous for (*:)+>        :: (Monad m               ) => StateT Int (IdentityT2 m  (Writer [Int])) () > >-- λ> execWriter |$> runIdentityT2 (runStateT program 0) >-- Tock!
DeepControl/Monad/Trans/Except.hs view
@@ -46,28 +46,29 @@ throwError2 :: (MonadError e m2, Applicative m1) => e -> m1 (m2 a) throwError2 = (*:) |$> throwError -catchError2 :: (MonadError e m2, Commutative m1, Commutative m2) => -                m1 (m2 a) -> (e -> m1 (m2 a)) -> m1 (m2 a)+catchError2 :: (MonadError e m2, Commutative m1, Applicative m1, Commutative m2, Applicative m2) => +               Catch2 e m1 m2 a catchError2 = liftCatch catchError   where-    liftCatch :: (Commutative m1, Commutative m2) => +    liftCatch :: (Commutative m1, Applicative m1, Commutative m2, Applicative m2) =>                   (forall a. Catch e m2 a) -> Catch2 e m1 m2 a     liftCatch catch m h =          let m' = commute m             h' = commute |$> h         in commute $ catch m' h' + ---------------------------------------------------------------- -- Level-3  throwError3 :: (MonadError e m3, Applicative m1, Applicative m2) => e -> m1 (m2 (m3 a)) throwError3 = (**:) |$> throwError -catchError3 :: (MonadError e m3, Commutative m1, Commutative m2, Commutative m3) => -                m1 (m2 (m3 a)) -> (e -> m1 (m2 (m3 a))) -> m1 (m2 (m3 a))+catchError3 :: (MonadError e m3, Commutative m1, Applicative m1, Commutative m2, Applicative m2, Commutative m3, Applicative m3) => +               Catch3 e m1 m2 m3 a catchError3 = liftCatch catchError   where-    liftCatch :: (Commutative m1, Commutative m2, Commutative m3) => +    liftCatch :: (Commutative m1, Applicative m1, Commutative m2, Applicative m2, Commutative m3, Applicative m3) =>                   (forall a. Catch e m3 a) -> Catch3 e m1 m2 m3 a     liftCatch catch m h =          let m' = float2 m@@ -80,11 +81,11 @@ throwError4 :: (MonadError e m4, Applicative m1, Applicative m2, Applicative m3) => e -> m1 (m2 (m3 (m4 a))) throwError4 = (***:) |$> throwError -catchError4 :: (MonadError e m4, Commutative m1, Commutative m2, Commutative m3, Commutative m4) => -                m1 (m2 (m3 (m4 a))) -> (e -> m1 (m2 (m3 (m4 a)))) -> m1 (m2 (m3 (m4 a)))+catchError4 :: (MonadError e m4, Commutative m1, Applicative m1, Commutative m2, Applicative m2, Commutative m3, Applicative m3, Commutative m4, Applicative m4) => +               Catch4 e m1 m2 m3 m4 a catchError4 = liftCatch catchError   where-    liftCatch :: (Commutative m1, Commutative m2, Commutative m3, Commutative m4) => +    liftCatch :: (Commutative m1, Applicative m1, Commutative m2, Applicative m2, Commutative m3, Applicative m3, Commutative m4, Applicative m4) =>                   (forall a. Catch e m4 a) -> Catch4 e m1 m2 m3 m4 a     liftCatch catch m h =          let m' = float3 m@@ -97,11 +98,11 @@ throwError5 :: (MonadError e m5, Applicative m1, Applicative m2, Applicative m3, Applicative m4) => e -> m1 (m2 (m3 (m4 (m5 a)))) throwError5 = (****:) |$> throwError -catchError5 :: (MonadError e m5, Commutative m1, Commutative m2, Commutative m3, Commutative m4, Commutative m5) => -                m1 (m2 (m3 (m4 (m5 a)))) -> (e -> m1 (m2 (m3 (m4 (m5 a))))) -> m1 (m2 (m3 (m4 (m5 a))))+catchError5 :: (MonadError e m5, Commutative m1, Applicative m1, Commutative m2, Applicative m2, Commutative m3, Applicative m3, Commutative m4, Applicative m4, Commutative m5, Applicative m5) => +               Catch5 e m1 m2 m3 m4 m5 a catchError5 = liftCatch catchError   where-    liftCatch :: (Commutative m1, Commutative m2, Commutative m3, Commutative m4, Commutative m5) => +    liftCatch :: (Commutative m1, Applicative m1, Commutative m2, Applicative m2, Commutative m3, Applicative m3, Commutative m4, Applicative m4, Commutative m5, Applicative m5) =>                  (forall a. Catch e m5 a) -> Catch5 e m1 m2 m3 m4 m5 a     liftCatch catch m h =          let m' = float4 m
DeepControl/Monad/Trans/Identity.hs view
@@ -73,20 +73,20 @@ instance (Applicative m1, Applicative m2) => Applicative (IdentityT2 m1 m2) where     pure x = IdentityT2 $ (**:) x     (<*>) = lift2IdentityT2 (|*>>)-instance (Monad m1, Monad2 m2) => Monad (IdentityT2 m1 m2) where+instance (Monad m1, Monad m2, Commutative m2) => Monad (IdentityT2 m1 m2) where     return = IdentityT2 . (**:)     m >>= f = IdentityT2 $ runIdentityT2 m >>== (f >-> runIdentityT2)  instance (Alternative m1, Alternative m2) => Alternative (IdentityT2 m1 m2) where     empty = IdentityT2 empty     (<|>) = lift2IdentityT2 (<|>)-instance (MonadPlus m1, Alternative m2, Monad2 m2) => MonadPlus (IdentityT2 m1 m2) where+instance (MonadPlus m1, Alternative m2, Monad m2, Commutative m2) => MonadPlus (IdentityT2 m1 m2) where     mzero = IdentityT2 mzero     mplus = lift2IdentityT2 mplus  instance MonadTrans2 IdentityT2 where     liftT2 = IdentityT2-instance (MonadIO m1, Monad m1, Monad2 m2) => MonadIO (IdentityT2 m1 m2) where+instance (MonadIO m1, Monad m1, Monad m2, Commutative m2) => MonadIO (IdentityT2 m1 m2) where     liftIO = liftT2 . (-*) . liftIO  lift2IdentityT2 ::@@ -125,20 +125,20 @@ instance (Applicative m1, Applicative m2, Applicative m3) => Applicative (IdentityT3 m1 m2 m3) where     pure x = IdentityT3 $ (***:) x     (<*>) = lift3IdentityT3 (|*>>>)-instance (Monad m1, Monad2 m2, Monad3 m3) => Monad (IdentityT3 m1 m2 m3) where+instance (Monad m1, Monad m2, Commutative m2, Monad m3, Commutative m3) => Monad (IdentityT3 m1 m2 m3) where     return = IdentityT3 . (***:)     m >>= f = IdentityT3 $ runIdentityT3 m >>>== (f >-> runIdentityT3)  instance (Alternative m1, Alternative m2, Alternative m3) => Alternative (IdentityT3 m1 m2 m3) where     empty = IdentityT3 empty     (<|>) = lift3IdentityT3 (<|>)-instance (MonadPlus m1, Alternative m2, Monad2 m2, Alternative m3, Monad3 m3) => MonadPlus (IdentityT3 m1 m2 m3) where+instance (MonadPlus m1, Alternative m2, Monad m2, Commutative m2, Alternative m3, Monad m3, Commutative m3) => MonadPlus (IdentityT3 m1 m2 m3) where     mzero = IdentityT3 mzero     mplus = lift3IdentityT3 mplus  instance MonadTrans3 IdentityT3 where     liftT3 = IdentityT3-instance (MonadIO m1, Monad m1, Monad2 m2, Monad3 m3) => MonadIO (IdentityT3 m1 m2 m3) where+instance (MonadIO m1, Monad m1, Monad m2, Commutative m2, Monad m3, Commutative m3) => MonadIO (IdentityT3 m1 m2 m3) where     liftIO = liftT3 . (-**) . liftIO  lift3IdentityT3 ::@@ -178,20 +178,20 @@ instance (Applicative m1, Applicative m2, Applicative m3, Applicative m4) => Applicative (IdentityT4 m1 m2 m3 m4) where     pure x = IdentityT4 $ (****:) x     (<*>) = lift4IdentityT4 (|*>>>>)-instance (Monad m1, Monad2 m2, Monad3 m3, Monad4 m4) => Monad (IdentityT4 m1 m2 m3 m4) where+instance (Monad m1, Monad m2, Commutative m2, Monad m3, Commutative m3, Monad m4, Commutative m4) => Monad (IdentityT4 m1 m2 m3 m4) where     return = IdentityT4 . (****:)     m >>= f = IdentityT4 $ runIdentityT4 m >>>>== (f >-> runIdentityT4)  instance (Alternative m1, Alternative m2, Alternative m3, Alternative m4) => Alternative (IdentityT4 m1 m2 m3 m4) where     empty = IdentityT4 empty     (<|>) = lift4IdentityT4 (<|>)-instance (MonadPlus m1, Alternative m2, Monad2 m2, Alternative m3, Monad3 m3, Alternative m4, Monad4 m4) => MonadPlus (IdentityT4 m1 m2 m3 m4) where+instance (MonadPlus m1, Alternative m2, Monad m2, Commutative m2, Alternative m3, Monad m3, Commutative m3, Alternative m4, Monad m4, Commutative m4) => MonadPlus (IdentityT4 m1 m2 m3 m4) where     mzero = IdentityT4 mzero     mplus = lift4IdentityT4 mplus  instance MonadTrans4 IdentityT4 where     liftT4 = IdentityT4-instance (MonadIO m1, Monad m1, Monad2 m2, Monad3 m3, Monad4 m4) => MonadIO (IdentityT4 m1 m2 m3 m4) where+instance (MonadIO m1, Monad m1, Monad m2, Commutative m2, Monad m3, Commutative m3, Monad m4, Commutative m4) => MonadIO (IdentityT4 m1 m2 m3 m4) where     liftIO = liftT4 . (-***) . liftIO  lift4IdentityT4 ::@@ -232,20 +232,20 @@ instance (Applicative m1, Applicative m2, Applicative m3, Applicative m4, Applicative m5) => Applicative (IdentityT5 m1 m2 m3 m4 m5) where     pure x = IdentityT5 $ (*****:) x     (<*>) = lift5IdentityT5 (|*>>>>>)-instance (Monad m1, Monad2 m2, Monad3 m3, Monad4 m4, Monad5 m5) => Monad (IdentityT5 m1 m2 m3 m4 m5) where+instance (Monad m1, Monad m2, Commutative m2, Monad m3, Commutative m3, Monad m4, Commutative m4, Monad m5, Commutative m5) => Monad (IdentityT5 m1 m2 m3 m4 m5) where     return = IdentityT5 . (*****:)     m >>= f = IdentityT5 $ runIdentityT5 m >>>>>== (f >-> runIdentityT5)  instance (Alternative m1, Alternative m2, Alternative m3, Alternative m4, Alternative m5) => Alternative (IdentityT5 m1 m2 m3 m4 m5) where     empty = IdentityT5 empty     (<|>) = lift5IdentityT5 (<|>)-instance (MonadPlus m1, Alternative m2, Monad2 m2, Alternative m3, Monad3 m3, Alternative m4, Monad4 m4, Alternative m5, Monad5 m5) => MonadPlus (IdentityT5 m1 m2 m3 m4 m5) where+instance (MonadPlus m1, Alternative m2, Monad m2, Commutative m2, Alternative m3, Monad m3, Commutative m3, Alternative m4, Monad m4, Commutative m4, Alternative m5, Monad m5, Commutative m5) => MonadPlus (IdentityT5 m1 m2 m3 m4 m5) where     mzero = IdentityT5 mzero     mplus = lift5IdentityT5 mplus  instance MonadTrans5 IdentityT5 where     liftT5 = IdentityT5-instance (MonadIO m1, Monad m1, Monad2 m2, Monad3 m3, Monad4 m4, Monad5 m5) => MonadIO (IdentityT5 m1 m2 m3 m4 m5) where+instance (MonadIO m1, Monad m1, Monad m2, Commutative m2, Monad m3, Commutative m3, Monad m4, Commutative m4, Monad m5, Commutative m5) => MonadIO (IdentityT5 m1 m2 m3 m4 m5) where     liftIO = liftT5 . (-****) . liftIO  lift5IdentityT5 ::@@ -274,5 +274,4 @@     (|--*--|) = IdentityT5 . (--*) . runIdentityT4     (|-*---|) = IdentityT5 . (-*) . runIdentityT4     (|*----|) = IdentityT5 . (*:) . runIdentityT4- 
README.md view
@@ -4,7 +4,7 @@  ## Examples -### [Applicative](https://hackage.haskell.org/package/deepcontrol-0.4.2.1/docs/DeepControl-Applicative.html)+### [Applicative](https://hackage.haskell.org/package/deepcontrol-0.4.3.0/docs/DeepControl-Applicative.html)  This module enables you to program in applicative style for more deeper level than the usual Applicative module expresses. You would soon realize exactly what more deeper level means by reading the example codes below in order.@@ -175,14 +175,14 @@     [Just 3]     >      [1]  -*|[Just (+), Just (-), Just (*), Nothing]|*- Just 2     [Just 3,Just (-1),Just 2,Nothing]-    >    [0,1]  -*|[Just (+), Just (-), Just (*), Nothing]|*- Just 2-    [Just 2,Just 3,Just (-2),Just (-1),Just 0,Just 2,Nothing,Nothing]+    >    [1,2]  -*|[Just (+), Just (-), Just (*), Nothing]|*- Just 2+    [Just 3,Just (-1),Just 2,Nothing,Just 4,Just 0,Just 4,Nothing]  #### Level-3, Level-4 and Level-5  Work well likewise. -### [Commutative](https://hackage.haskell.org/package/deepcontrol-0.4.2.1/docs/DeepControl-Commutative.html)+### [Commutative](https://hackage.haskell.org/package/deepcontrol-0.4.3.0/docs/DeepControl-Commutative.html)      Prelude> :m DeepControl.Commutative @@ -201,9 +201,9 @@     > commute $ Just (Right 1)     Right (Just 1) -So these monads can be deepened to Monad2, Monad3, Monad4 and Monad5.+So these monads can be deepened freely. -### [Monad](https://hackage.haskell.org/package/deepcontrol-0.4.2.1/docs/DeepControl-Monad.html)+### [Monad](https://hackage.haskell.org/package/deepcontrol-0.4.3.0/docs/DeepControl-Monad.html)  This module enables you to program in Monad for more deeper level than the usual Monad module expresses. You would soon realize exactly what more deeper level means by reading the example codes below in order.@@ -248,7 +248,7 @@ factorial n | n < 0  = (-*) Nothing             | n == 0 = (*:) $ tell [0] >> (*:) 1             | n > 0  = factorial (n-1) >>== \v ->   -                       tell [v] ->~                 -- (->~) is a level-2 cover-bind function, analogous for (>>)+                       tell [v] ->~                 -- (->~) is a level-2 cover-sequence function, analogous for (>>)                        (**:) (n * v)  -- > runWriter |$> factorial 5@@ -267,8 +267,8 @@ factorial n | n < 0  = (*-*) Nothing                  -- (*-*) is a level-3 cover function             | n == 0 = (**:) $ tell [0] >> (*:) 1             | n > 0  = factorial (n-1) >>>== \v ->    -- (>>>==) is the level-3 bind function, analogous for (>>=)-                       print v >--~                   -- (>--~) is a level-3 cover-bind function, analogous for (>>)-                       tell [v] -->~                  -- (-->~) is a level-3 cover-bind function too, analogous for (>>)+                       print v >--~                   -- (>--~) is a level-3 cover-sequence function, analogous for (>>)+                       tell [v] -->~                  -- (-->~) is a level-3 cover-sequence function too, analogous for (>>)                        (***:) (n * v)  -- > runWriter |$>> factorial 5@@ -283,7 +283,7 @@  Work well likewise. -### [Monad-Transformer](https://hackage.haskell.org/package/deepcontrol-0.4.2.1/docs/DeepControl-Monad-Trans.html)+### [Monad-Transformer](https://hackage.haskell.org/package/deepcontrol-0.4.3.0/docs/DeepControl-Monad-Trans.html)  #### Level-2 @@ -338,7 +338,8 @@  ```haskell import DeepControl.Applicative ((|$>))-import DeepControl.Monad (Monad2)+import DeepControl.Commutative (Commutative)+import DeepControl.Monad (Monad) import DeepControl.Monad.Morph ((|>|)) import DeepControl.Monad.Trans (liftT, (|*|), (|-*|), (|*-|)) import DeepControl.Monad.Trans.Identity@@ -362,12 +363,12 @@     n <- get     liftT $ tell [n] -program ::               StateT Int (IdentityT2 IO (Writer [Int])) () -- StateT-IdentityT2-IO-Writer monad, a level-2 monad-transform+program ::                             StateT Int (IdentityT2 IO (Writer [Int])) () -- StateT-IdentityT2-IO-Writer monad, a level-2 monad-transform program = replicateM_ 4 $ do-    ((|-*|).liftT) |>| tock                                           -- (|-*|) is a level-2 trans-cover function, analogous for (-*)-        :: (Monad2 m) => StateT Int (IdentityT2 IO m             ) ()-    ((|*-|).liftT) |>| save                                           -- (|*-|) is a level-2 trans-cover function, analogous for (*:)-        :: (Monad  m) => StateT Int (IdentityT2 m  (Writer [Int])) ()+    ((|-*|).liftT) |>| tock                                                         -- (|-*|) is a level-2 trans-cover function, analogous for (-*)+        :: (Monad m, Commutative m) => StateT Int (IdentityT2 IO m             ) ()+    ((|*-|).liftT) |>| save                                                         -- (|*-|) is a level-2 trans-cover function, analogous for (*:)+        :: (Monad m               ) => StateT Int (IdentityT2 m  (Writer [Int])) ()  -- λ> execWriter |$> runIdentityT2 (runStateT program 0) -- Tock!@@ -380,7 +381,7 @@  Work well likewise. -### [Monad-Morph](https://hackage.haskell.org/package/deepcontrol-0.4.2.1/docs/DeepControl-Monad-Morph.html)+### [Monad-Morph](https://hackage.haskell.org/package/deepcontrol-0.4.3.0/docs/DeepControl-Monad-Morph.html)  Here is a monad-morph example, a level-2 monad-morph. @@ -427,4 +428,4 @@  Work well likewise. -### [Arrow](https://hackage.haskell.org/package/deepcontrol-0.4.2.1/docs/DeepControl-Arrow.html)+### [Arrow](https://hackage.haskell.org/package/deepcontrol-0.4.3.0/docs/DeepControl-Arrow.html)
deepcontrol.cabal view
@@ -1,5 +1,5 @@ name:                deepcontrol-version:             0.4.2.1+version:             0.4.3.0 synopsis:            Provide more deeper level style of programming than the usual Control.xxx modules express description:         This module enables more deeper level style of programming than the usual Control.xxx modules express, especially for Applicative and Monad. license:             BSD3
test/unit_MonadTrans.hs view
@@ -1,7 +1,8 @@ import Test.HUnit hiding (State)  import DeepControl.Applicative ((|$>))-import DeepControl.Monad (Monad2)+import DeepControl.Commutative (Commutative)+import DeepControl.Monad (Monad) import DeepControl.Monad.Morph ((|>|)) import DeepControl.Monad.Trans (liftT, (|*|), (|-*|), (|*-|)) import DeepControl.Monad.Trans.Identity@@ -25,12 +26,12 @@     n <- get     liftT $ tell [n] -program ::               StateT Int (IdentityT2 IO (Writer [Int])) () -- StateT-IdentityT2-IO-Writer monad, a level-2 monad-transform+program ::                             StateT Int (IdentityT2 IO (Writer [Int])) () -- StateT-IdentityT2-IO-Writer monad, a level-2 monad-transform program = replicateM_ 4 $ do-    ((|-*|).liftT) |>| tock                                           -- (|-*|) is a level-2 trans-cover function, analogous for (-*)-        :: (Monad2 m) => StateT Int (IdentityT2 IO m             ) ()-    ((|*-|).liftT) |>| save                                           -- (|*-|) is a level-2 trans-cover function, analogous for (*:)-        :: (Monad  m) => StateT Int (IdentityT2 m  (Writer [Int])) ()+    ((|-*|).liftT) |>| tock                                                         -- (|-*|) is a level-2 trans-cover function, analogous for (-*)+        :: (Monad m, Commutative m) => StateT Int (IdentityT2 IO m             ) ()+    ((|*-|).liftT) |>| save                                                         -- (|*-|) is a level-2 trans-cover function, analogous for (*:)+        :: (Monad m               ) => StateT Int (IdentityT2 m  (Writer [Int])) ()  -- λ> execWriter |$> runIdentityT2 (runStateT program 0) -- Tock!