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

On Thu, Feb 12, 2009 at 6:36 PM, Edsko de Vries <devri...@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
>
_______________________________________________
Haskell-Cafe mailing list
Haskell-Cafe@haskell.org
http://www.haskell.org/mailman/listinfo/haskell-cafe

Reply via email to