planet-mitchell-0.1.0: Planet Mitchell

Contents

Synopsis

class Applicative m => Monad (m :: * -> *) where #

The Monad class defines the basic operations over a monad, a concept from a branch of mathematics known as category theory. From the perspective of a Haskell programmer, however, it is best to think of a monad as an abstract datatype of actions. Haskell's do expressions provide a convenient syntax for writing monadic expressions.

Instances of Monad should satisfy the following laws:

• return a >>= k  =  k a
• m >>= return  =  m
• m >>= (\x -> k x >>= h)  =  (m >>= k) >>= h

Furthermore, the Monad and Applicative operations should relate as follows:

• pure = return
• (<*>) = ap

The above laws imply:

• fmap f xs  =  xs >>= return . f
• (>>) = (*>)

and that pure and (<*>) satisfy the applicative functor laws.

The instances of Monad for lists, Maybe and IO defined in the Prelude satisfy these laws.

Minimal complete definition

(>>=)

Methods

(>>=) :: m a -> (a -> m b) -> m b infixl 1 #

Sequentially compose two actions, passing any value produced by the first as an argument to the second.

return :: a -> m a #

Inject a value into the monadic type.

Instances
 Monad [] Since: base-2.1 Instance detailsDefined in GHC.Base Methods(>>=) :: [a] -> (a -> [b]) -> [b] #(>>) :: [a] -> [b] -> [b] #return :: a -> [a] #fail :: String -> [a] # Since: base-2.1 Instance detailsDefined in GHC.Base Methods(>>=) :: Maybe a -> (a -> Maybe b) -> Maybe b #(>>) :: Maybe a -> Maybe b -> Maybe b #return :: a -> Maybe a #fail :: String -> Maybe a # Since: base-2.1 Instance detailsDefined in GHC.Base Methods(>>=) :: IO a -> (a -> IO b) -> IO b #(>>) :: IO a -> IO b -> IO b #return :: a -> IO a #fail :: String -> IO a # Since: base-4.9.0.0 Instance detailsDefined in GHC.Generics Methods(>>=) :: Par1 a -> (a -> Par1 b) -> Par1 b #(>>) :: Par1 a -> Par1 b -> Par1 b #return :: a -> Par1 a #fail :: String -> Par1 a # Instance detailsDefined in Language.Haskell.TH.Syntax Methods(>>=) :: Q a -> (a -> Q b) -> Q b #(>>) :: Q a -> Q b -> Q b #return :: a -> Q a #fail :: String -> Q a # Instance detailsDefined in Data.Aeson.Types.Internal Methods(>>=) :: IResult a -> (a -> IResult b) -> IResult b #(>>) :: IResult a -> IResult b -> IResult b #return :: a -> IResult a #fail :: String -> IResult a # Instance detailsDefined in Data.Aeson.Types.Internal Methods(>>=) :: Result a -> (a -> Result b) -> Result b #(>>) :: Result a -> Result b -> Result b #return :: a -> Result a #fail :: String -> Result a # Instance detailsDefined in Data.Aeson.Types.Internal Methods(>>=) :: Parser a -> (a -> Parser b) -> Parser b #(>>) :: Parser a -> Parser b -> Parser b #return :: a -> Parser a #fail :: String -> Parser a # Since: base-4.9.0.0 Instance detailsDefined in Data.Complex Methods(>>=) :: Complex a -> (a -> Complex b) -> Complex b #(>>) :: Complex a -> Complex b -> Complex b #return :: a -> Complex a #fail :: String -> Complex a # Since: base-4.9.0.0 Instance detailsDefined in Data.Semigroup Methods(>>=) :: Min a -> (a -> Min b) -> Min b #(>>) :: Min a -> Min b -> Min b #return :: a -> Min a #fail :: String -> Min a # Since: base-4.9.0.0 Instance detailsDefined in Data.Semigroup Methods(>>=) :: Max a -> (a -> Max b) -> Max b #(>>) :: Max a -> Max b -> Max b #return :: a -> Max a #fail :: String -> Max a # Since: base-4.9.0.0 Instance detailsDefined in Data.Semigroup Methods(>>=) :: First a -> (a -> First b) -> First b #(>>) :: First a -> First b -> First b #return :: a -> First a #fail :: String -> First a # Since: base-4.9.0.0 Instance detailsDefined in Data.Semigroup Methods(>>=) :: Last a -> (a -> Last b) -> Last b #(>>) :: Last a -> Last b -> Last b #return :: a -> Last a #fail :: String -> Last a # Since: base-4.9.0.0 Instance detailsDefined in Data.Semigroup Methods(>>=) :: Option a -> (a -> Option b) -> Option b #(>>) :: Option a -> Option b -> Option b #return :: a -> Option a #fail :: String -> Option a # Since: base-4.8.0.0 Instance detailsDefined in Data.Functor.Identity Methods(>>=) :: Identity a -> (a -> Identity b) -> Identity b #(>>) :: Identity a -> Identity b -> Identity b #return :: a -> Identity a #fail :: String -> Identity a # Since: base-4.3.0.0 Instance detailsDefined in GHC.Conc.Sync Methods(>>=) :: STM a -> (a -> STM b) -> STM b #(>>) :: STM a -> STM b -> STM b #return :: a -> STM a #fail :: String -> STM a # Instance detailsDefined in Data.Monoid Methods(>>=) :: First a -> (a -> First b) -> First b #(>>) :: First a -> First b -> First b #return :: a -> First a #fail :: String -> First a # Instance detailsDefined in Data.Monoid Methods(>>=) :: Last a -> (a -> Last b) -> Last b #(>>) :: Last a -> Last b -> Last b #return :: a -> Last a #fail :: String -> Last a # Since: base-4.8.0.0 Instance detailsDefined in Data.Semigroup.Internal Methods(>>=) :: Dual a -> (a -> Dual b) -> Dual b #(>>) :: Dual a -> Dual b -> Dual b #return :: a -> Dual a #fail :: String -> Dual a # Since: base-4.8.0.0 Instance detailsDefined in Data.Semigroup.Internal Methods(>>=) :: Sum a -> (a -> Sum b) -> Sum b #(>>) :: Sum a -> Sum b -> Sum b #return :: a -> Sum a #fail :: String -> Sum a # Since: base-4.8.0.0 Instance detailsDefined in Data.Semigroup.Internal Methods(>>=) :: Product a -> (a -> Product b) -> Product b #(>>) :: Product a -> Product b -> Product b #return :: a -> Product a #fail :: String -> Product a # Since: base-4.11.0.0 Instance detailsDefined in Data.Ord Methods(>>=) :: Down a -> (a -> Down b) -> Down b #(>>) :: Down a -> Down b -> Down b #return :: a -> Down a #fail :: String -> Down a # Since: base-2.1 Instance detailsDefined in Text.ParserCombinators.ReadPrec Methods(>>=) :: ReadPrec a -> (a -> ReadPrec b) -> ReadPrec b #(>>) :: ReadPrec a -> ReadPrec b -> ReadPrec b #return :: a -> ReadPrec a #fail :: String -> ReadPrec a # Since: base-2.1 Instance detailsDefined in Text.ParserCombinators.ReadP Methods(>>=) :: ReadP a -> (a -> ReadP b) -> ReadP b #(>>) :: ReadP a -> ReadP b -> ReadP b #return :: a -> ReadP a #fail :: String -> ReadP a # Since: base-4.9.0.0 Instance detailsDefined in GHC.Base Methods(>>=) :: NonEmpty a -> (a -> NonEmpty b) -> NonEmpty b #(>>) :: NonEmpty a -> NonEmpty b -> NonEmpty b #return :: a -> NonEmpty a #fail :: String -> NonEmpty a # Monad Put Instance detailsDefined in Data.ByteString.Builder.Internal Methods(>>=) :: Put a -> (a -> Put b) -> Put b #(>>) :: Put a -> Put b -> Put b #return :: a -> Put a #fail :: String -> Put a # Instance detailsDefined in Data.Tree Methods(>>=) :: Tree a -> (a -> Tree b) -> Tree b #(>>) :: Tree a -> Tree b -> Tree b #return :: a -> Tree a #fail :: String -> Tree a # Instance detailsDefined in Data.Sequence.Internal Methods(>>=) :: Seq a -> (a -> Seq b) -> Seq b #(>>) :: Seq a -> Seq b -> Seq b #return :: a -> Seq a #fail :: String -> Seq a # Instance detailsDefined in Data.DList Methods(>>=) :: DList a -> (a -> DList b) -> DList b #(>>) :: DList a -> DList b -> DList b #return :: a -> DList a #fail :: String -> DList a # Instance detailsDefined in Control.Parallel.Strategies Methods(>>=) :: Eval a -> (a -> Eval b) -> Eval b #(>>) :: Eval a -> Eval b -> Eval b #return :: a -> Eval a #fail :: String -> Eval a # Instance detailsDefined in Data.Vector Methods(>>=) :: Vector a -> (a -> Vector b) -> Vector b #(>>) :: Vector a -> Vector b -> Vector b #return :: a -> Vector a #fail :: String -> Vector a # Instance detailsDefined in Numeric.Log Methods(>>=) :: Log a -> (a -> Log b) -> Log b #(>>) :: Log a -> Log b -> Log b #return :: a -> Log a #fail :: String -> Log a # Instance detailsDefined in Control.Monad.Managed Methods(>>=) :: Managed a -> (a -> Managed b) -> Managed b #(>>) :: Managed a -> Managed b -> Managed b #return :: a -> Managed a #fail :: String -> Managed a # Instance detailsDefined in Options.Applicative.Types Methods(>>=) :: ReadM a -> (a -> ReadM b) -> ReadM b #(>>) :: ReadM a -> ReadM b -> ReadM b #return :: a -> ReadM a #fail :: String -> ReadM a # Instance detailsDefined in Options.Applicative.Types Methods(>>=) :: ParserM a -> (a -> ParserM b) -> ParserM b #(>>) :: ParserM a -> ParserM b -> ParserM b #return :: a -> ParserM a #fail :: String -> ParserM a # Instance detailsDefined in Options.Applicative.Types Methods(>>=) :: ParserResult a -> (a -> ParserResult b) -> ParserResult b #(>>) :: ParserResult a -> ParserResult b -> ParserResult b #return :: a -> ParserResult a # Instance detailsDefined in Data.Primitive.SmallArray Methods(>>=) :: SmallArray a -> (a -> SmallArray b) -> SmallArray b #(>>) :: SmallArray a -> SmallArray b -> SmallArray b #return :: a -> SmallArray a # Instance detailsDefined in Data.Primitive.Array Methods(>>=) :: Array a -> (a -> Array b) -> Array b #(>>) :: Array a -> Array b -> Array b #return :: a -> Array a #fail :: String -> Array a # Instance detailsDefined in Reactive.Banana.Types Methods(>>=) :: Future a -> (a -> Future b) -> Future b #(>>) :: Future a -> Future b -> Future b #return :: a -> Future a #fail :: String -> Future a # Instance detailsDefined in Reactive.Banana.Types Methods(>>=) :: Moment a -> (a -> Moment b) -> Moment b #(>>) :: Moment a -> Moment b -> Moment b #return :: a -> Moment a #fail :: String -> Moment a # Instance detailsDefined in Reactive.Banana.Types Methods(>>=) :: MomentIO a -> (a -> MomentIO b) -> MomentIO b #(>>) :: MomentIO a -> MomentIO b -> MomentIO b #return :: a -> MomentIO a #fail :: String -> MomentIO a # Instance details Methods(>>=) :: Element a -> (a -> Element b) -> Element b #(>>) :: Element a -> Element b -> Element b #return :: a -> Element a #fail :: String -> Element a # Instance detailsDefined in UnliftIO.Memoize Methods(>>=) :: Memoized a -> (a -> Memoized b) -> Memoized b #(>>) :: Memoized a -> Memoized b -> Memoized b #return :: a -> Memoized a #fail :: String -> Memoized a # Since: base-2.1 Instance detailsDefined in Text.ParserCombinators.ReadP Methods(>>=) :: P a -> (a -> P b) -> P b #(>>) :: P a -> P b -> P b #return :: a -> P a #fail :: String -> P a # () :=> (Monad ((->) a :: * -> *)) Instance detailsDefined in Data.Constraint Methodsins :: () :- Monad ((->) a) # () :=> (Monad []) Instance detailsDefined in Data.Constraint Methodsins :: () :- Monad [] # () :=> (Monad IO) Instance detailsDefined in Data.Constraint Methodsins :: () :- Monad IO # () :=> (Monad (Either a)) Instance detailsDefined in Data.Constraint Methodsins :: () :- Monad (Either a) # () :=> (Monad Identity) Instance detailsDefined in Data.Constraint Methodsins :: () :- Monad Identity # Monad (Either e) Since: base-4.4.0.0 Instance detailsDefined in Data.Either Methods(>>=) :: Either e a -> (a -> Either e b) -> Either e b #(>>) :: Either e a -> Either e b -> Either e b #return :: a -> Either e a #fail :: String -> Either e a # Monad (U1 :: * -> *) Since: base-4.9.0.0 Instance detailsDefined in GHC.Generics Methods(>>=) :: U1 a -> (a -> U1 b) -> U1 b #(>>) :: U1 a -> U1 b -> U1 b #return :: a -> U1 a #fail :: String -> U1 a # Monoid a => Monad ((,) a) Since: base-4.9.0.0 Instance detailsDefined in GHC.Base Methods(>>=) :: (a, a0) -> (a0 -> (a, b)) -> (a, b) #(>>) :: (a, a0) -> (a, b) -> (a, b) #return :: a0 -> (a, a0) #fail :: String -> (a, a0) # Monad (ST s) Since: base-2.1 Instance detailsDefined in GHC.ST Methods(>>=) :: ST s a -> (a -> ST s b) -> ST s b #(>>) :: ST s a -> ST s b -> ST s b #return :: a -> ST s a #fail :: String -> ST s a # Monad (Results s) Instance detailsDefined in Text.Earley.Parser.Internal Methods(>>=) :: Results s a -> (a -> Results s b) -> Results s b #(>>) :: Results s a -> Results s b -> Results s b #return :: a -> Results s a #fail :: String -> Results s a # Monad (Grammar r) Instance detailsDefined in Text.Earley.Grammar Methods(>>=) :: Grammar r a -> (a -> Grammar r b) -> Grammar r b #(>>) :: Grammar r a -> Grammar r b -> Grammar r b #return :: a -> Grammar r a #fail :: String -> Grammar r a # Representable f => Monad (Co f) Instance detailsDefined in Data.Functor.Rep Methods(>>=) :: Co f a -> (a -> Co f b) -> Co f b #(>>) :: Co f a -> Co f b -> Co f b #return :: a -> Co f a #fail :: String -> Co f a # Monad m => Monad (WrappedMonad m) Instance detailsDefined in Control.Applicative Methods(>>=) :: WrappedMonad m a -> (a -> WrappedMonad m b) -> WrappedMonad m b #(>>) :: WrappedMonad m a -> WrappedMonad m b -> WrappedMonad m b #return :: a -> WrappedMonad m a #fail :: String -> WrappedMonad m a # ArrowApply a => Monad (ArrowMonad a) Since: base-2.1 Instance detailsDefined in Control.Arrow Methods(>>=) :: ArrowMonad a a0 -> (a0 -> ArrowMonad a b) -> ArrowMonad a b #(>>) :: ArrowMonad a a0 -> ArrowMonad a b -> ArrowMonad a b #return :: a0 -> ArrowMonad a a0 #fail :: String -> ArrowMonad a a0 # Monad (Proxy :: * -> *) Since: base-4.7.0.0 Instance detailsDefined in Data.Proxy Methods(>>=) :: Proxy a -> (a -> Proxy b) -> Proxy b #(>>) :: Proxy a -> Proxy b -> Proxy b #return :: a -> Proxy a #fail :: String -> Proxy a # Monad m => Monad (MaybeT m) Instance detailsDefined in Control.Monad.Trans.Maybe Methods(>>=) :: MaybeT m a -> (a -> MaybeT m b) -> MaybeT m b #(>>) :: MaybeT m a -> MaybeT m b -> MaybeT m b #return :: a -> MaybeT m a #fail :: String -> MaybeT m a # Alternative f => Monad (Cofree f) Instance detailsDefined in Control.Comonad.Cofree Methods(>>=) :: Cofree f a -> (a -> Cofree f b) -> Cofree f b #(>>) :: Cofree f a -> Cofree f b -> Cofree f b #return :: a -> Cofree f a #fail :: String -> Cofree f a # Functor f => Monad (Free f) Instance detailsDefined in Control.Monad.Free Methods(>>=) :: Free f a -> (a -> Free f b) -> Free f b #(>>) :: Free f a -> Free f b -> Free f b #return :: a -> Free f a #fail :: String -> Free f a # Monad m => Monad (Yoneda m) Instance detailsDefined in Data.Functor.Yoneda Methods(>>=) :: Yoneda m a -> (a -> Yoneda m b) -> Yoneda m b #(>>) :: Yoneda m a -> Yoneda m b -> Yoneda m b #return :: a -> Yoneda m a #fail :: String -> Yoneda m a # Instance detailsDefined in Control.Lens.Reified Methods(>>=) :: ReifiedGetter s a -> (a -> ReifiedGetter s b) -> ReifiedGetter s b #(>>) :: ReifiedGetter s a -> ReifiedGetter s b -> ReifiedGetter s b #return :: a -> ReifiedGetter s a #fail :: String -> ReifiedGetter s a # Instance detailsDefined in Control.Lens.Reified Methods(>>=) :: ReifiedFold s a -> (a -> ReifiedFold s b) -> ReifiedFold s b #(>>) :: ReifiedFold s a -> ReifiedFold s b -> ReifiedFold s b #return :: a -> ReifiedFold s a #fail :: String -> ReifiedFold s a # Monad m => Monad (ListT m) Instance detailsDefined in List.Transformer Methods(>>=) :: ListT m a -> (a -> ListT m b) -> ListT m b #(>>) :: ListT m a -> ListT m b -> ListT m b #return :: a -> ListT m a #fail :: String -> ListT m a # Monad (LogicT m) Instance detailsDefined in Control.Monad.Logic Methods(>>=) :: LogicT m a -> (a -> LogicT m b) -> LogicT m b #(>>) :: LogicT m a -> LogicT m b -> LogicT m b #return :: a -> LogicT m a #fail :: String -> LogicT m a # (Monad (Rep p), Representable p) => Monad (Prep p) Instance detailsDefined in Data.Profunctor.Rep Methods(>>=) :: Prep p a -> (a -> Prep p b) -> Prep p b #(>>) :: Prep p a -> Prep p b -> Prep p b #return :: a -> Prep p a #fail :: String -> Prep p a # Monad (IParser t) Instance detailsDefined in Data.Text.Internal.Read Methods(>>=) :: IParser t a -> (a -> IParser t b) -> IParser t b #(>>) :: IParser t a -> IParser t b -> IParser t b #return :: a -> IParser t a #fail :: String -> IParser t a # Monad (SetM s) Instance detailsDefined in Data.Graph Methods(>>=) :: SetM s a -> (a -> SetM s b) -> SetM s b #(>>) :: SetM s a -> SetM s b -> SetM s b #return :: a -> SetM s a #fail :: String -> SetM s a # Monad (IncrementalDecoder s) Instance detailsDefined in Codec.CBOR.Read Methods(>>=) :: IncrementalDecoder s a -> (a -> IncrementalDecoder s b) -> IncrementalDecoder s b #(>>) :: IncrementalDecoder s a -> IncrementalDecoder s b -> IncrementalDecoder s b #return :: a -> IncrementalDecoder s a #fail :: String -> IncrementalDecoder s a # Class (Applicative f) (Monad f) Instance detailsDefined in Data.Constraint Methods (Monad m) :=> (Functor (WrappedMonad m)) Instance detailsDefined in Data.Constraint Methods (Monad m) :=> (Applicative (WrappedMonad m)) Instance detailsDefined in Data.Constraint Methods Monad f => Monad (Rec1 f) Since: base-4.9.0.0 Instance detailsDefined in GHC.Generics Methods(>>=) :: Rec1 f a -> (a -> Rec1 f b) -> Rec1 f b #(>>) :: Rec1 f a -> Rec1 f b -> Rec1 f b #return :: a -> Rec1 f a #fail :: String -> Rec1 f a # Monad (Results t s) Instance detailsDefined in Text.Earley.Generator.Internal Methods(>>=) :: Results t s a -> (a -> Results t s b) -> Results t s b #(>>) :: Results t s a -> Results t s b -> Results t s b #return :: a -> Results t s a #fail :: String -> Results t s a # Monad f => Monad (Alt f) Instance detailsDefined in Data.Semigroup.Internal Methods(>>=) :: Alt f a -> (a -> Alt f b) -> Alt f b #(>>) :: Alt f a -> Alt f b -> Alt f b #return :: a -> Alt f a #fail :: String -> Alt f a # Monad m => Monad (IdentityT m) Instance detailsDefined in Control.Monad.Trans.Identity Methods(>>=) :: IdentityT m a -> (a -> IdentityT m b) -> IdentityT m b #(>>) :: IdentityT m a -> IdentityT m b -> IdentityT m b #return :: a -> IdentityT m a #fail :: String -> IdentityT m a # (Applicative f, Monad f) => Monad (WhenMissing f x) Equivalent to ReaderT k (ReaderT x (MaybeT f)).Since: containers-0.5.9 Instance detailsDefined in Data.IntMap.Internal Methods(>>=) :: WhenMissing f x a -> (a -> WhenMissing f x b) -> WhenMissing f x b #(>>) :: WhenMissing f x a -> WhenMissing f x b -> WhenMissing f x b #return :: a -> WhenMissing f x a #fail :: String -> WhenMissing f x a # Monad m => Monad (ExceptT e m) Instance detailsDefined in Control.Monad.Trans.Except Methods(>>=) :: ExceptT e m a -> (a -> ExceptT e m b) -> ExceptT e m b #(>>) :: ExceptT e m a -> ExceptT e m b -> ExceptT e m b #return :: a -> ExceptT e m a #fail :: String -> ExceptT e m a # Monad m => Monad (GT m g) Instance detailsDefined in Data.Graph.Inductive.Query.Monad Methods(>>=) :: GT m g a -> (a -> GT m g b) -> GT m g b #(>>) :: GT m g a -> GT m g b -> GT m g b #return :: a -> GT m g a #fail :: String -> GT m g a # (Functor f, Monad m) => Monad (FreeT f m) Instance detailsDefined in Control.Monad.Trans.Free Methods(>>=) :: FreeT f m a -> (a -> FreeT f m b) -> FreeT f m b #(>>) :: FreeT f m a -> FreeT f m b -> FreeT f m b #return :: a -> FreeT f m a #fail :: String -> FreeT f m a # (Alternative f, Monad w) => Monad (CofreeT f w) Instance detailsDefined in Control.Comonad.Trans.Cofree Methods(>>=) :: CofreeT f w a -> (a -> CofreeT f w b) -> CofreeT f w b #(>>) :: CofreeT f w a -> CofreeT f w b -> CofreeT f w b #return :: a -> CofreeT f w a #fail :: String -> CofreeT f w a # (Monad m, Error e) => Monad (ErrorT e m) Instance detailsDefined in Control.Monad.Trans.Error Methods(>>=) :: ErrorT e m a -> (a -> ErrorT e m b) -> ErrorT e m b #(>>) :: ErrorT e m a -> ErrorT e m b -> ErrorT e m b #return :: a -> ErrorT e m a #fail :: String -> ErrorT e m a # Monad (Indexed i a) Instance detailsDefined in Control.Lens.Internal.Indexed Methods(>>=) :: Indexed i a a0 -> (a0 -> Indexed i a b) -> Indexed i a b #(>>) :: Indexed i a a0 -> Indexed i a b -> Indexed i a b #return :: a0 -> Indexed i a a0 #fail :: String -> Indexed i a a0 # Monad m => Monad (StateT s m) Instance detailsDefined in Control.Monad.Trans.State.Lazy Methods(>>=) :: StateT s m a -> (a -> StateT s m b) -> StateT s m b #(>>) :: StateT s m a -> StateT s m b -> StateT s m b #return :: a -> StateT s m a #fail :: String -> StateT s m a # Monad (STE e s) Instance detailsDefined in Control.Monad.STE.Internal Methods(>>=) :: STE e s a -> (a -> STE e s b) -> STE e s b #(>>) :: STE e s a -> STE e s b -> STE e s b #return :: a -> STE e s a #fail :: String -> STE e s a # Monad m => Monad (StateT s m) Instance detailsDefined in Control.Monad.Trans.State.Strict Methods(>>=) :: StateT s m a -> (a -> StateT s m b) -> StateT s m b #(>>) :: StateT s m a -> StateT s m b -> StateT s m b #return :: a -> StateT s m a #fail :: String -> StateT s m a # Monad f => Monad (Star f a) Instance detailsDefined in Data.Profunctor.Types Methods(>>=) :: Star f a a0 -> (a0 -> Star f a b) -> Star f a b #(>>) :: Star f a a0 -> Star f a b -> Star f a b #return :: a0 -> Star f a a0 #fail :: String -> Star f a a0 # Monad (Costar f a) Instance detailsDefined in Data.Profunctor.Types Methods(>>=) :: Costar f a a0 -> (a0 -> Costar f a b) -> Costar f a b #(>>) :: Costar f a a0 -> Costar f a b -> Costar f a b #return :: a0 -> Costar f a a0 #fail :: String -> Costar f a a0 # Monad (Tagged s) Instance detailsDefined in Data.Tagged Methods(>>=) :: Tagged s a -> (a -> Tagged s b) -> Tagged s b #(>>) :: Tagged s a -> Tagged s b -> Tagged s b #return :: a -> Tagged s a #fail :: String -> Tagged s a # Monad m => Monad (WriterT w m) Instance detailsDefined in Control.Monad.Trans.Writer.CPS.Internal Methods(>>=) :: WriterT w m a -> (a -> WriterT w m b) -> WriterT w m b #(>>) :: WriterT w m a -> WriterT w m b -> WriterT w m b #return :: a -> WriterT w m a #fail :: String -> WriterT w m a # Class (Monad f, Alternative f) (MonadPlus f) Instance detailsDefined in Data.Constraint Methodscls :: MonadPlus f :- (Monad f, Alternative f) # Monad ((->) r :: * -> *) Since: base-2.1 Instance detailsDefined in GHC.Base Methods(>>=) :: (r -> a) -> (a -> r -> b) -> r -> b #(>>) :: (r -> a) -> (r -> b) -> r -> b #return :: a -> r -> a #fail :: String -> r -> a # (Monad f, Monad g) => Monad (f :*: g) Since: base-4.9.0.0 Instance detailsDefined in GHC.Generics Methods(>>=) :: (f :*: g) a -> (a -> (f :*: g) b) -> (f :*: g) b #(>>) :: (f :*: g) a -> (f :*: g) b -> (f :*: g) b #return :: a -> (f :*: g) a #fail :: String -> (f :*: g) a # (Monad f, Monad g) => Monad (Product f g) Since: base-4.9.0.0 Instance detailsDefined in Data.Functor.Product Methods(>>=) :: Product f g a -> (a -> Product f g b) -> Product f g b #(>>) :: Product f g a -> Product f g b -> Product f g b #return :: a -> Product f g a #fail :: String -> Product f g a # Monad (Cokleisli w a) Instance detailsDefined in Control.Comonad Methods(>>=) :: Cokleisli w a a0 -> (a0 -> Cokleisli w a b) -> Cokleisli w a b #(>>) :: Cokleisli w a a0 -> Cokleisli w a b -> Cokleisli w a b #return :: a0 -> Cokleisli w a a0 #fail :: String -> Cokleisli w a a0 # (Monad f, Applicative f) => Monad (WhenMatched f x y) Equivalent to ReaderT Key (ReaderT x (ReaderT y (MaybeT f)))Since: containers-0.5.9 Instance detailsDefined in Data.IntMap.Internal Methods(>>=) :: WhenMatched f x y a -> (a -> WhenMatched f x y b) -> WhenMatched f x y b #(>>) :: WhenMatched f x y a -> WhenMatched f x y b -> WhenMatched f x y b #return :: a -> WhenMatched f x y a #fail :: String -> WhenMatched f x y a # (Applicative f, Monad f) => Monad (WhenMissing f k x) Equivalent to  ReaderT k (ReaderT x (MaybeT f)) .Since: containers-0.5.9 Instance detailsDefined in Data.Map.Internal Methods(>>=) :: WhenMissing f k x a -> (a -> WhenMissing f k x b) -> WhenMissing f k x b #(>>) :: WhenMissing f k x a -> WhenMissing f k x b -> WhenMissing f k x b #return :: a -> WhenMissing f k x a #fail :: String -> WhenMissing f k x a # Monad m => Monad (ReaderT r m) Instance detailsDefined in Control.Monad.Trans.Reader Methods(>>=) :: ReaderT r m a -> (a -> ReaderT r m b) -> ReaderT r m b #(>>) :: ReaderT r m a -> ReaderT r m b -> ReaderT r m b #return :: a -> ReaderT r m a #fail :: String -> ReaderT r m a # Stream s => Monad (ParsecT e s m) return returns a parser that succeeds without consuming input. Instance detailsDefined in Text.Megaparsec.Internal Methods(>>=) :: ParsecT e s m a -> (a -> ParsecT e s m b) -> ParsecT e s m b #(>>) :: ParsecT e s m a -> ParsecT e s m b -> ParsecT e s m b #return :: a -> ParsecT e s m a #fail :: String -> ParsecT e s m a # Monad (ContT r m) Instance detailsDefined in Control.Monad.Trans.Cont Methods(>>=) :: ContT r m a -> (a -> ContT r m b) -> ContT r m b #(>>) :: ContT r m a -> ContT r m b -> ContT r m b #return :: a -> ContT r m a #fail :: String -> ContT r m a # Monad f => Monad (M1 i c f) Since: base-4.9.0.0 Instance detailsDefined in GHC.Generics Methods(>>=) :: M1 i c f a -> (a -> M1 i c f b) -> M1 i c f b #(>>) :: M1 i c f a -> M1 i c f b -> M1 i c f b #return :: a -> M1 i c f a #fail :: String -> M1 i c f a # (Monad f, Applicative f) => Monad (WhenMatched f k x y) Equivalent to  ReaderT k (ReaderT x (ReaderT y (MaybeT f))) Since: containers-0.5.9 Instance detailsDefined in Data.Map.Internal Methods(>>=) :: WhenMatched f k x y a -> (a -> WhenMatched f k x y b) -> WhenMatched f k x y b #(>>) :: WhenMatched f k x y a -> WhenMatched f k x y b -> WhenMatched f k x y b #return :: a -> WhenMatched f k x y a #fail :: String -> WhenMatched f k x y a #

(=<<) :: Monad m => (a -> m b) -> m a -> m b infixr 1 #

Same as >>=, but with the arguments interchanged.

(>=>) :: Monad m => (a -> m b) -> (b -> m c) -> a -> m c infixr 1 #

(<=<) :: Monad m => (b -> m c) -> (a -> m b) -> a -> m c infixr 1 #

Right-to-left Kleisli composition of monads. (>=>), with the arguments flipped.

Note how this operator resembles function composition (.):

(.)   ::            (b ->   c) -> (a ->   b) -> a ->   c
(<=<) :: Monad m => (b -> m c) -> (a -> m b) -> a -> m c

(<$!>) :: Monad m => (a -> b) -> m a -> m b infixl 4 # Strict version of <$>.

Since: base-4.8.0.0

join :: Monad m => m (m a) -> m a #

The join function is the conventional monad join operator. It is used to remove one level of monadic structure, projecting its bound argument into the outer level.

loopM :: Monad m => (a -> m (Either a b)) -> a -> m b #

A monadic version of loop, where the predicate returns Left as a seed for the next loop or Right to abort the loop.

unlessM :: Monad m => m Bool -> m () -> m () #

Like unless, but where the test can be monadic.

whenJustM :: Monad m => m (Maybe a) -> (a -> m ()) -> m () #

Like whenJust, but where the test can be monadic.

whenM :: Monad m => m Bool -> m () -> m () #

Like when, but where the test can be monadic.

whileM :: Monad m => m Bool -> m () #

Keep running an operation until it becomes False. As an example:

whileM $do sleep 0.1; notM$ doesFileExist "foo.txt"


If you need some state persisted between each test, use loopM.

## Newtypes

newtype Kleisli (m :: * -> *) a b #

Constructors

 Kleisli FieldsrunKleisli :: a -> m b
Instances
 Monad m => Arrow (Kleisli m) Since: base-2.1 Instance detailsDefined in Control.Arrow Methodsarr :: (b -> c) -> Kleisli m b c #first :: Kleisli m b c -> Kleisli m (b, d) (c, d) #second :: Kleisli m b c -> Kleisli m (d, b) (d, c) #(***) :: Kleisli m b c -> Kleisli m b' c' -> Kleisli m (b, b') (c, c') #(&&&) :: Kleisli m b c -> Kleisli m b c' -> Kleisli m b (c, c') # MonadPlus m => ArrowZero (Kleisli m) Since: base-2.1 Instance detailsDefined in Control.Arrow MethodszeroArrow :: Kleisli m b c # MonadPlus m => ArrowPlus (Kleisli m) Since: base-2.1 Instance detailsDefined in Control.Arrow Methods(<+>) :: Kleisli m b c -> Kleisli m b c -> Kleisli m b c # Monad m => ArrowChoice (Kleisli m) Since: base-2.1 Instance detailsDefined in Control.Arrow Methodsleft :: Kleisli m b c -> Kleisli m (Either b d) (Either c d) #right :: Kleisli m b c -> Kleisli m (Either d b) (Either d c) #(+++) :: Kleisli m b c -> Kleisli m b' c' -> Kleisli m (Either b b') (Either c c') #(|||) :: Kleisli m b d -> Kleisli m c d -> Kleisli m (Either b c) d # Monad m => ArrowApply (Kleisli m) Since: base-2.1 Instance detailsDefined in Control.Arrow Methodsapp :: Kleisli m (Kleisli m b c, b) c # MonadFix m => ArrowLoop (Kleisli m) Beware that for many monads (those for which the >>= operation is strict) this instance will not satisfy the right-tightening law required by the ArrowLoop class.Since: base-2.1 Instance detailsDefined in Control.Arrow Methodsloop :: Kleisli m (b, d) (c, d) -> Kleisli m b c # Monad m => Profunctor (Kleisli m) Instance detailsDefined in Data.Profunctor.Unsafe Methodsdimap :: (a -> b) -> (c -> d) -> Kleisli m b c -> Kleisli m a d #lmap :: (a -> b) -> Kleisli m b c -> Kleisli m a c #rmap :: (b -> c) -> Kleisli m a b -> Kleisli m a c #(#.) :: Coercible c b => (b -> c) -> Kleisli m a b -> Kleisli m a c #(.#) :: Coercible b a => Kleisli m b c -> (a -> b) -> Kleisli m a c # (Monad m, Functor m) => Representable (Kleisli m) Instance detailsDefined in Data.Profunctor.Rep Associated Typestype Rep (Kleisli m) :: * -> * # Methodstabulate :: (d -> Rep (Kleisli m) c) -> Kleisli m d c # Monad m => Choice (Kleisli m) Instance detailsDefined in Data.Profunctor.Choice Methodsleft' :: Kleisli m a b -> Kleisli m (Either a c) (Either b c) #right' :: Kleisli m a b -> Kleisli m (Either c a) (Either c b) # (Monad m, Distributive m) => Mapping (Kleisli m) Instance detailsDefined in Data.Profunctor.Mapping Methodsmap' :: Functor f => Kleisli m a b -> Kleisli m (f a) (f b) # (Distributive f, Monad f) => Closed (Kleisli f) Instance detailsDefined in Data.Profunctor.Closed Methodsclosed :: Kleisli f a b -> Kleisli f (x -> a) (x -> b) # Monad m => Strong (Kleisli m) Instance detailsDefined in Data.Profunctor.Strong Methodsfirst' :: Kleisli m a b -> Kleisli m (a, c) (b, c) #second' :: Kleisli m a b -> Kleisli m (c, a) (c, b) # MonadFix m => Costrong (Kleisli m) Instance detailsDefined in Data.Profunctor.Strong Methodsunfirst :: Kleisli m (a, d) (b, d) -> Kleisli m a b #unsecond :: Kleisli m (d, a) (d, b) -> Kleisli m a b # Monad m => Category (Kleisli m :: * -> * -> *) Since: base-3.0 Instance detailsDefined in Control.Arrow Methodsid :: Kleisli m a a #(.) :: Kleisli m b c -> Kleisli m a b -> Kleisli m a c # Bind m => Semigroupoid (Kleisli m :: * -> * -> *) Instance detailsDefined in Data.Semigroupoid Methodso :: Kleisli m j k1 -> Kleisli m i j -> Kleisli m i k1 # Wrapped (Kleisli m a b) Instance detailsDefined in Control.Lens.Wrapped Associated Typestype Unwrapped (Kleisli m a b) :: * # Methods_Wrapped' :: Iso' (Kleisli m a b) (Unwrapped (Kleisli m a b)) # t ~ Kleisli m' a' b' => Rewrapped (Kleisli m a b) t Instance detailsDefined in Control.Lens.Wrapped type Rep (Kleisli m) Instance detailsDefined in Data.Profunctor.Rep type Rep (Kleisli m) = m type Unwrapped (Kleisli m a b) Instance detailsDefined in Control.Lens.Wrapped type Unwrapped (Kleisli m a b) = a -> m b

class (MFunctor t, MonadTrans t) => MMonad (t :: (* -> *) -> * -> *) where #

A monad in the category of monads, using lift from MonadTrans as the analog of return and embed as the analog of (=<<):

embed lift = id

embed f (lift m) = f m

embed g (embed f t) = embed (\m -> embed g (f m)) t

Minimal complete definition

embed

Methods

embed :: Monad n => (forall a. m a -> t n a) -> t m b -> t n b #

Embed a newly created MMonad layer within an existing layer

embed is analogous to (=<<)

Instances

squash :: (Monad m, MMonad t) => t (t m) a -> t m a #

Squash two MMonad layers into a single layer

squash is analogous to join

(>|>) :: (Monad m3, MMonad t) => (forall a. m1 a -> t m2 a) -> (forall b. m2 b -> t m3 b) -> m1 c -> t m3 c infixr 2 #

Compose two MMonad layer-building functions

(>|>) is analogous to (>=>)

(<|<) :: (Monad m3, MMonad t) => (forall b. m2 b -> t m3 b) -> (forall a. m1 a -> t m2 a) -> m1 c -> t m3 c infixl 2 #

Equivalent to (>|>) with the arguments flipped

(<|<) is analogous to (<=<)

(=<|) :: (Monad n, MMonad t) => (forall a. m a -> t n a) -> t m b -> t n b infixr 2 #

An infix operator equivalent to embed

(=<|) is analogous to (=<<)

(|>=) :: (Monad n, MMonad t) => t m b -> (forall a. m a -> t n a) -> t n b infixl 2 #

Equivalent to (=<|) with the arguments flipped

(|>=) is analogous to (>>=)