Check out liftM2. It's almost what you want.

On Thu, Feb 12, 2009 at 6:36 PM, Edsko de Vries <devriese@cs.tcd.ie> wrote:
Hi,

I can desugar

 do x' <- x
    f x'

as

 x >>= \x -> f x'

which is clearly the same as

 x >>= f

However, now consider

 do x' <- x
    y' <- y
    f x' y'

desugared, this is

 x >>= \x -> y >>= \y' -> f x' y'

I can simplify the second half to

 x >>= \x -> y >>= f x'

but now we are stuck. I feel it should be possible to write something like

 x ... y ... f

or perhaps

 f ... x ... y

the best I could come up with was

 join $ return f `ap` x `ap` y

which is not terrible but quite as easy as I feel this should be. Any hints?

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