Confusing type error behaviour
Compile this example with GHC 7.8.3.
module Foo where
broken :: [Int]
broken = ()
ambiguous :: a -> String
ambiguous _ = show 0
You get
Foo.hs:4:10:
Couldn't match expected type ‘[Int]’ with actual type ‘()’
In the expression: ()
In an equation for ‘broken’: broken = ()
Foo.hs:7:15:
No instance for (Show a0) arising from a use of ‘show’
The type variable ‘a0’ is ambiguous
(and a similar ambiguous (Num a0)
error).
But if you comment out broken
, the program compiles, using the defaulting rules to choose a0
= Integer
.
This is obviously wrong.
Reported by Evan Laforge.