Version 2 (modified by ia0, 6 years ago) (diff)


GHC Kind level

This page gives the theory and implementation overview and details about GHC's kind level. This work is related to Conor's SHE system and will be related to Iavor's work on TypeNats to deal with primitive types (promoted Int and Char).


We use the mechanism of promotion to lift a data type to the kind level. This gives access at the type level to the data constructors, and at the kind level to the type constructor. All data types cannot be promoted. For examples GADTs or data types with higher-order kinds. We add kind polymorphism to allow promotion of polymorphic data constructors (like Nil or Cons).

More details can be found on the attached pdf.


Examples of reimplementation of existing Haskell librairies can be found in the examples pdf.


The branch is called ghc-kinds. Its current state is:

ADT promotion Primitives Kind polymorphism
Parser Yes Yes Yes
Renamer In progress Yes

The stage1 compiler does not work, since there is some undefineds in the typechecker. So you won't be able to build a stage2 or even run validate. This is the first priority.