!36,      !"#$%&'()*+(non-portable (requires the kitchen sink) experimentalEdward Kmett <ekmett@gmail.com>JClass alias to get back an approximation of the original, easy-to-specify  class where available Now of course we can have "s and ,s float to the top of a do5 expression, so we need a way to convert them to any # or  instance respectively Usage: go (do something)  Traditional Control.Monad.mzero3, note this probably has lost its type inference.  You probably want +. The traditional )L, note this probably has lost its type inference where you want to use it.  Break out mplus !"Same trick using with , to build a canonical ), here we exploit the  laws to make a canonical + . Has no members except bottom. #qWhen a parameterized monad can be used without varying its parameter, we can get the ease of use of the original Monad class. $(Implement parameterized monads like Oleg'Ss restricted monads, but vary the monad itself rather than restrict its parameters %&'6Restrict the cases where we allow pattern matching to (.. You have to explicitly supply this for your # ()An inferable version of Prelude.return *+An inferable version of Control.Monad.mzero -RWe we losing type inference for MonadZero anyways, plumb around the special cases .it')s trivial to map a function over nothing /0123456789:;<=>?@ ,ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~ !"#$%&'()*+,'($%&* !"#)+  !!"#$%&%&'(()*+      !"#$%&'()*+,-./01234565789:;<=<><?<@<A<B<C<D<E<F<G<H<I<J01KLMNLMOLPQLPRLPSLTULVWLVXLVYLVZLV[LV\0]^0]^0]_0]`0]a0]b0]c0]d0ef0eg0eh0ei0ej0ek0lm0lm0ln0op0op0oq0or0os0ot0ou0ov0wx0wx0wy0wz0w{0w|0w}0w~0w0w0w0wmonad-param-0.0.3Control.Monad.Parameterizedbase Control.MonadapliftM5liftM4liftM3liftM2liftMunlesswhen replicateM_ replicateMfoldM_foldM zipWithM_zipWithM mapAndUnzipMjoinmsumforM_forMfilterMguardmapM_mapM sequence_sequence MonadPlusGogo MonadZeromzeroMReturnreturnMMPlusmplusMZeroMonadBind>>=>>Failfailreturn=<<mzerotransformers-0.2.2.0Data.Functor.IdentityIdentity$fMPlusMZeroaa$fFunctorMZeroControl.Monad.FixmfixMonadFix Data.Functionfix GHC.Conc.IO registerDelay GHC.Conc.Sync writeTVarreadTVar readTVarIO newTVarIOnewTVaralwaysalwaysSucceedscatchSTMthrowSTMorElseretry atomicallySTMTVar runIdentity mtl-2.0.1.0Control.Monad.Cont.ClasscallCC MonadContControl.Monad.Error.Class catchError throwError MonadErrorControl.Monad.State.Class MonadStateControl.Monad.Writer.Classcensorlistenspasslistentell MonadWriterControl.Monad.Trans.ContContTrunContTContmapContwithContmapContT withContTControl.Monad.Trans.ErrorErrorT runErrorTErrornoMsgstrMsg mapErrorTControl.Monad.Trans.ListListTrunListTControl.Monad.Trans.ReaderReaderT runReaderTReader mapReader withReader mapReaderT withReaderTControl.Monad.Trans.State.LazyStateT runStateTState evalState execStatemapState withState evalStateT execStateT mapStateT withStateT stm-2.2.0.1Control.Monad.STMcheckControl.Concurrent.STM.TArrayTArrayControl.Concurrent.STM.TMVar isEmptyTMVar swapTMVar readTMVar tryPutTMVarputTMVar tryTakeTMVar takeTMVarnewEmptyTMVarIO newEmptyTMVar newTMVarIOnewTMVarTMVarControl.Concurrent.STM.TChan isEmptyTChan unGetTChandupTChan readTChan writeTChan newTChanIOnewTChanTChan