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.



Reply via email to