extra "ambiguous type variable" errors after a "couldn't match" error?

Evan Laforge qdunkan at gmail.com
Thu Jul 17 01:32:22 UTC 2014

7.8.3 has a new behaviour where a "plain" type error will cause
"ambiguous type variable" errors, e.g.:

module M where

broken :: [Int]
broken = ()

ambiguous :: a -> [String]
ambiguous _ = map show [1..]

When imported in ghci, I get:

    Couldn't match expected type ‘[Int]’ with actual type ‘()’
    In the expression: ()
    In an equation for ‘broken’: broken = ()

    No instance for (Show a0) arising from a use of ‘show’
    The type variable ‘a0’ is ambiguous
[ ... and then more for Enum and Num ]

It seems like the 'a' type variable causes this to happen.  But I
don't see why a type error in another place should cause 'ambiguous'
to become ambiguous.

More information about the Glasgow-haskell-users mailing list