Consider the following code:
> test :: [Int]
> test = let return x = [x]
> x >>= f = x ++ (f (last x))
> x >> y = x >>= (\ _ -> y)
> in do { [1,2,3]; [4,5,6] }
Should `test' evaluate to `[1,2,3,4,5,6]' or `[4,5,6,4,5,6,4,5,6]'?
That is, should the `do' syntactic sugar expand to code that uses
plain `>>' or `Prelude.>>'?
The Haskell 1.4 report is not clear on this point, IMHO.
--
Fergus Henderson <[EMAIL PROTECTED]> | "I have always known that the pursuit
WWW: <http://www.cs.mu.oz.au/~fjh> | of excellence is a lethal habit"
PGP: finger [EMAIL PROTECTED] | -- the last words of T. S. Garp.