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




_______________________________________________
Haskell-Cafe mailing list
Haskell-Cafe@haskell.org
http://www.haskell.org/mailman/listinfo/haskell-cafe

Reply via email to