It looks like the 6.10 behavior is actually the correct one: http://www.mail-archive.com/glasgow-haskell-bugs@haskell.org/msg13632.html Also, see the do-notation translation section in the Haskell 98 Report: http://www.haskell.org/onlinereport/exps.html#sect3.14 -Eric On Wed, Dec 3, 2008 at 5:45 AM, Krasimir Angelov <kr.angelov@gmail.com> wrote:
Hi,
One of my students wrote code like this:
prop_blank s (i,j) li = if i==li then do if something then True else False else prop_blank (...) (i,j) (li+1)
This code is not accepted from GHC 6.8.3 because Bool is not a monad. In particular the error message is:
Sudoku.hs:269:5: Couldn't match expected type `Bool' against inferred type `a b' In the expression: ......
Surprisingly the same code is accepted from GHC 6.10. This looks like a bug for me. The easiest way to reproduce this is to try to evaluate:
do True
in GHCi with GHC 6.8.3 and with GHC 6.10
Is there any reason to accept this code?
Regards, Krasimir _______________________________________________ Haskell mailing list Haskell@haskell.org http://www.haskell.org/mailman/listinfo/haskell