[Haskell-cafe] monad subexpressions

Dan Weston westondan at imageworks.com
Fri Aug 3 16:25:43 EDT 2007

Jules Bean wrote:
> do
>   a <- m
>   b <- n
>   l a x b y
> becomes
> l (<- m) x (<- n) y
> ...with, I suppose, left-to-right evaluation order. This looks 'almost 
> like substitution' which is the goal.


So then (flip f) (<- m) (<- n) does *not* equal f (<- n) (<- m) ?

There goes any hope of my understanding future Haskell code. (<- n) sure 
looks like an operator section to me, and more importantly a first class 
Haskell object. What human parsing this would not see a mere function 

And I guess this makes the following complete nonsense:

   let a = (<- m)
   let b = (<- n)
   l a x b y

What about

   let (b,a) = ((<- n),(<- m))

   -- many lines of code

   l a x b y

Who can say that b was evaluated before a?

I hope the language syntax does not evolve beyond my merely mortal 
ability to desugar it?

Dan Weston

More information about the Haskell-Cafe mailing list