[GHC] #9323: Confusing type error behaviour
GHC
ghc-devs at haskell.org
Thu Jul 17 08:57:56 UTC 2014
#9323: Confusing type error behaviour
-------------------------------------+-------------------------------------
Reporter: simonpj | Owner:
Type: bug | Status: new
Priority: normal | Milestone:
Component: Compiler | Version: 7.8.2
Keywords: | Differential Revisions:
Operating System: Unknown/Multiple | Architecture:
Type of failure: None/Unknown | Unknown/Multiple
Test Case: | Difficulty: Unknown
Blocking: | Blocked By:
| Related Tickets:
-------------------------------------+-------------------------------------
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.
--
Ticket URL: <http://ghc.haskell.org/trac/ghc/ticket/9323>
GHC <http://www.haskell.org/ghc/>
The Glasgow Haskell Compiler
More information about the ghc-tickets
mailing list