Marcin 'Qrczak' Kowalczyk wrote:
Thu, 03 May 2001 06:29:35 -0400, Lennart Augustsson <lennart@mail.augustsson.net> pisze:
Try this program: -- Try commenting out this type signature. fun:: (Num a) => a -> Int
Test.hs:7: Ambiguous type variable(s) `a' in the constraint `Num a' arising from use of `fun' at Test.hs:7 In the first argument of `g', namely `fun' In the definition of `ii': g fun
Test.hs:18: Ambiguous type variable(s) `a' in the constraint `C a' arising from use of `m' at Test.hs:18 In the first argument of `putStrLn', namely `(m ii)' In the definition of `main': putStrLn (m ii)
Defaulting applies only when all classes involved are Haskell 98.
First, I cannot parse that sentence, but I assume you mean when all classes are Prelude classes. Second, I'm pretty sure we all agreed that this was a silly rule and should not be in the Haskell definition. I was certain that that it had been removed from the Haskell report, but I guess not. (hbc used to make this check, but I removed it when everyone seemed to agree that rule was a bad idea). Third, moving ii to a different module might still exhibit this problem. (I'm not sure how ghc defaults exported definitions.) But most importantly, this was a bad example. There was a much better one posted on this mailing list a while ago. Does anyone remember it? -- Lennart
hbc, nhc98 and Hugs are not conforming.