whereas under 1.3 fixity it parses as:
main :: IO ()
main = f
(dropOut cond1 $
(g
(dropOut cond2 $
h)
dropOut :: Bool - IO () - IO ()
dropOut gotError cont | gotError = return ()
| otherwise = cont
which is what
| Right associativity allows:
| f = \x-
| g = \y-
| h x
| which with left associativity will be rejected because x is unbound
| (in h x), or even worse: if x is bound at an outer scope, you might get
| completely the wrong value (or if you're lucky a type error).
No worries here: the
*** I was originally posting to ask a question, but I've solved the
*** question through trying to ask it. :-) I've included the mail
*** anyway in case anyone finds it useful.
|The fixity only makes a difference when you consider an expression
|like f = g = h, where, for example, f,g,h are
Well, Mark was faster, the text below basically says the same thing.
On Tue, 15 Dec 1998, Malcolm Wallace wrote:
Just a quickie:
I see that the fixity decl of the monad operation and = changed
from right associative in 1.3 to left associative in 1.4. This strikes
me as a bug in 1.4 which