Error message mentions impredicative polymorphism
When we apply Lens to too many arguments in the :kind command we get a sensible error message
ghci> type Lens s a = forall f. Functor f => (a -> f a) -> (s -> f s)
ghci> :kind Lens _ _
Lens _ _ :: *
ghci> :kind Lens _ _ _
<interactive>:1:1: error:
• Expecting one fewer argument to ‘Lens t0 t1’
Expected kind ‘k0 -> k1’, but ‘Lens t0 t1’ has kind ‘*’
• In the type ‘Lens _ _ _’
but use the same in a type signature or annotation and it complains about impredicative polymorphism
ghci> :t undefined :: Lens _ _ _
<interactive>:1:1: error:
• Illegal polymorphic type: Lens _ _1
GHC doesn't yet support impredicative polymorphism
• In the expression: undefined :: Lens _ _ _
ghci> a :: Lens _ _ _; a = undefined
<interactive>:6:1: error:
Illegal polymorphic type: Lens _ _1
GHC doesn't yet support impredicative polymorphism
Trac metadata
| Trac field | Value |
|---|---|
| Version | 7.10.3 |
| Type | Bug |
| TypeOfFailure | OtherFailure |
| Priority | normal |
| Resolution | Unresolved |
| Component | Compiler |
| Test case | |
| Differential revisions | |
| BlockedBy | |
| Related | |
| Blocking | |
| CC | |
| Operating system | |
| Architecture |