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

Jeremy Shaw jeremy at n-heptane.com
Thu Feb 12 19:04:45 EST 2009


Hello,

You could do:

   (f =<< x) =<< y

?

- jeremy



At Thu, 12 Feb 2009 23:36:19 +0000,
Edsko de Vries 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 at haskell.org
> http://www.haskell.org/mailman/listinfo/haskell-cafe


More information about the Haskell-Cafe mailing list