[Haskell-cafe] On the purity of Haskell  Ertugrul Söylemez es at
ertes.de Mon Jan 2 06:46:05 CET 2012  Steve Horne <sh006d3592 at
blueyonder.co.uk> wrote:  > The do-notation sugar may confuse
the issue - the <- looks like an > operator, but translating to
binds-and-lambdas form suggests > otherwise. Quick translations
(I hope no mistakes) with lots of > parens... >    m >>= (\x ->
(f x x))  First of all, you can omit all parentheses, because
the (>>=) operator is associative by definition (this is not
checked by the compiler  > At first sight, these two expressions
can give different results for > reasons other than evaluation
order. In particular, there are two bind > operators, not just
one. > That is, x and y could get different values for reasons
other than the > two m references referring to different things.
So... is that true?  Yes, that's correct.  Remember that
referential transparency does not say that you are not allowed
to pass different values to the same function.  It just forbids
functions to r