Kind checking fails when using PolyKinds
GHC HEAD and earlier versions are failing on the following program:
{-# LANGUAGE PolyKinds #-}
import GHC.Exts(Any)
f = (undefined :: a -> m a) :: Any -> Any Any
../tmp/test-polykinds.hs:3:6:
Couldn't match kind ‘k1’ with ‘*’
‘k1’ is a rigid type variable bound by
an expression type signature: Any -> Any Any
at ../tmp/test-polykinds.hs:3:5
Expected type: Any -> Any Any
Actual type: Any -> m0 Any
In the expression: (undefined :: a -> m a) :: Any -> Any Any
In an equation for ‘f’:
f = (undefined :: a -> m a) :: Any -> Any Any
Rewriting the program as follows has compilation succeed.
f = (undefined :: a -> m a) `asTypeOf` (undefined :: Any -> Any Any)
And removing the PolyKinds
extension also has compilation succeed.
Trac metadata
Trac field | Value |
---|---|
Version | 7.8.2 |
Type | Bug |
TypeOfFailure | OtherFailure |
Priority | normal |
Resolution | Unresolved |
Component | Compiler (Type checker) |
Test case | |
Differential revisions | |
BlockedBy | |
Related | |
Blocking | |
CC | |
Operating system | |
Architecture |