On Sun, May 30, 2010 at 11:35 AM, Michael Vanier <mvanier42@gmail.com> wrote:
I stumbled across this monadic combinator:

mcombine :: Monad m => (a -> a -> a) -> m a -> m a -> m a
mcombine f mx my = do
   x <- mx
   y <- my
   return (f x y)

I used it to chain the outputs of two Parsec String parsers together using this operator:

(<++>) :: Monad m => m String -> m String -> m String
(<++>) = mcombine (++)

mcombine seems like such a basic operation that it should be a library function, but I couldn't find one matching it on hoogle.  Is there one?

- Mike

liftM2: http://hackage.haskell.org/packages/archive/base/4.2.0.1/doc/html/Control-Monad.html#v%3AliftM2

Strangely, Hayoo didn't turn this one up... anyone know why?

Michael