[Haskell-cafe] Another point-free question (>>=, join, ap)

Edsko de Vries devriese at cs.tcd.ie
Thu Feb 12 18:36:19 EST 2009


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


More information about the Haskell-Cafe mailing list