[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