Using an inferred type as a type signature fails
See the thread starting here http://www.haskell.org/pipermail/glasgow-haskell-users/2006-December/011714.html. Here's a short example:
class C a b where
op :: a -> a
-- f :: C a b => a -> a
f x = op x
It doesn't get much simpler than that! With the type sig, GHC can't see that the (C a b)
provided can satisfy the (C a b1)
which arises from the call to op. However, without the constraint, GHC simply abstracts over the constrains arising in the RHS, namely (C a b1)
, and hence infers the type
f :: C a b1 => a -> a
It is extremely undesirable that the inferred type does not work as a type signature, but I don't see how to fix it easily. It doesn't affect many programs, I think; hence low priority
Trac metadata
Trac field | Value |
---|---|
Version | 6.6 |
Type | Bug |
TypeOfFailure | OtherFailure |
Priority | low |
Resolution | Unresolved |
Component | Compiler (Type checker) |
Test case | |
Differential revisions | |
BlockedBy | |
Related | |
Blocking | |
CC | |
Operating system | Unknown |
Architecture | Unknown |