[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