poly-control-1.0.0: This package provides abstraction for polymorphic controls, like PolyMonads or PolyApplicatives.

Safe HaskellNone
LanguageHaskell2010

Control.Monad.Shuffle

Documentation

class Shuffle m1 m2 where Source

Methods

shuffle :: m1 (m2 a) -> m2 (m1 a) Source

Instances

(Monad m, Functor m) => Shuffle (Either e) m Source 

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) Source

($>>=) :: (Monad m, Monad t, Functor t, Shuffle m t) => m a -> (a -> t (m b)) -> t (m b) infixl 1 Source

deepBind :: (Monad m, Monad t, Functor t, Shuffle m t) => t (m a) -> (a -> t (m b)) -> t (m b) Source