-- Hoogle documentation, generated by Haddock -- See Hoogle, http://www.haskell.org/hoogle/ -- | This package provides abstraction for polymorphic controls, like PolyMonads or PolyApplicatives. -- -- This package provides abstraction for polymorphic controls, like -- PolyMonads or PolyApplicatives. @package poly-control @version 1.0.0 module Control.Applicative.Poly type MonoBind m = PolyBind m m ~ m class PolyApplicative m n (<<*>>) :: PolyApplicative m n => m (a -> b) -> n a -> PolyBind m n b instance (Control.Applicative.Poly.MonoBind m, GHC.Base.Applicative m) => Control.Applicative.Poly.PolyApplicative m m module Control.Monad.Poly class PolyApplicative m n => PolyMonad m n (>>>=) :: PolyMonad m n => m a -> (a -> n b) -> PolyBind m n b polyBind :: PolyMonad m n => m a -> (a -> n b) -> PolyBind m n b polyJoin :: PolyMonad m n => m (n a) -> PolyBind m n a instance (GHC.Base.Monad m, Control.Applicative.Poly.MonoBind m, Control.Applicative.Poly.PolyApplicative m m) => Control.Monad.Poly.PolyMonad m m module Control.Monad.Shuffle class Shuffle m1 m2 shuffle :: Shuffle m1 m2 => m1 (m2 a) -> m2 (m1 a) shuffleJoin :: (Shuffle n1 m2, PolyMonad m1 m2, PolyMonad n1 n2, Functor m1, Functor mout, mout ~ PolyBind m1 m2, nout ~ PolyBind n1 n2) => m1 (n1 (m2 (n2 a))) -> mout (nout a) ($>>=) :: (Monad m, Monad t, Functor t, Shuffle m t) => m a -> (a -> t (m b)) -> t (m b) deepBind :: (Monad m, Monad t, Functor t, Shuffle m t) => t (m a) -> (a -> t (m b)) -> t (m b) instance (GHC.Base.Monad m, GHC.Base.Functor m) => Control.Monad.Shuffle.Shuffle (Data.Either.Either e) m module Control.Poly