[GHC] #6022: GHC infers over-general types

GHC cvs-ghc at haskell.org
Thu Apr 19 09:30:33 CEST 2012


#6022: GHC infers over-general types
---------------------------------+------------------------------------------
    Reporter:  simonpj           |       Owner:                  
        Type:  bug               |      Status:  new             
    Priority:  high              |   Milestone:  7.6.1           
   Component:  Compiler          |     Version:  7.4.1           
    Keywords:                    |          Os:  Unknown/Multiple
Architecture:  Unknown/Multiple  |     Failure:  None/Unknown    
  Difficulty:  Unknown           |    Testcase:                  
   Blockedby:                    |    Blocking:                  
     Related:                    |  
---------------------------------+------------------------------------------
 Consider
 {{{
 f x = x + head
 }}}
 GHC will (with no flags) will compile this almost-certainly-wrong program,
 giving `f` the type
 {{{
     f :: forall a. Num ([a] -> a) => ([a] -> a) -> [a] -> a
 }}}
 There's nothing wrong with that type, and in principle someone might later
 define a suitable instance of `Num`, but (a) it's not Haskell 98, and (b)
 it's unlikely to be right, so we've deferred a type error from the
 definition site of `f` to the (perhaps much later) call site.

 I think GHC should complain, and require a type signature if that's what
 you really want.  This came up on
 [http://stackoverflow.com/questions/10091874/haskell-why-is-there-no-type-
 mismatch-and-why-does-this-compile Stackoverflow]

-- 
Ticket URL: <http://hackage.haskell.org/trac/ghc/ticket/6022>
GHC <http://www.haskell.org/ghc/>
The Glasgow Haskell Compiler



More information about the Glasgow-haskell-bugs mailing list