[Haskell-cafe] Re: Kleisli composition operator

Duncan Coutts duncan.coutts at worc.ox.ac.uk
Sun Aug 3 11:09:46 EDT 2008


On Sun, 2008-08-03 at 14:52 +0000, Roly Perera wrote:
> > I'm obviously missing something basic here but I don't seem to be able to use
> > the >=> operator which is apparently defined in the Prelude and also in
> > Control.Monad.
> 
> Sorry, I wasn't very clear in my original posting.  What I meant to say is that
> the compiler seems to be unable to find a definition of >=>.  I get the message:
> 
> Not in scope: `>=>'
> 
> My understanding is that I shouldn't need to import this at all by default, and
> that importing Control.Monad should also pick it up.

It's not in the Prelude but it is in Control.Monad in base version 3
and later. You're probably using an older GHC which has base version
2.x.

You can define it locally:

-- | Left-to-right Kleisli composition of monads.
(>=>)       :: Monad m => (a -> m b) -> (b -> m c) -> (a -> m c)
f >=> g     = \x -> f x >>= g


Duncan



More information about the Haskell-Cafe mailing list