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 |