Type variable capture in InstanceSigs message
If I load this file in GHCi:
{-# LANGUAGE RankNTypes, InstanceSigs #-}
class C a where
f :: a -> b
instance C (a -> b) where
f :: x
f = undefined
I get the message
Method signature does not match class; it should be
f :: forall b. (a -> b) -> b
In the instance declaration for `C (a -> b)'
However, this is not the correct type (and if I copy-paste it, GHCi would still complain). The b from the instance head got captured. The correct type would be forall b1. (a -> b) -> b1.
Trac metadata
| Trac field | Value |
|---|---|
| Version | 7.6.1 |
| Type | Bug |
| TypeOfFailure | OtherFailure |
| Priority | normal |
| Resolution | Unresolved |
| Component | Compiler |
| Test case | |
| Differential revisions | |
| BlockedBy | |
| Related | |
| Blocking | |
| CC | roma@ro-che.info |
| Operating system | |
| Architecture |