|Version 3 (modified by ross@…, 9 years ago) (diff)|
In Haskell 98, each type constructor and variable has a kind. Though the Report uses a notation for kinds, they do not appear in Haskell source.
GHC permits types and new type constructors and variables to be annotated with a kind signature, e.g.
type T (f :: * -> *) = f Int
- Kind Annotations
- Allows more machine-checked documentation.
- Haskell 98 defaults kinds to *, which is a nuisance if you want a higher kind. Kind annotations remove the need for awkward workarounds like dummy data constructors. See KindInference for alternative solutions to this problem.
To adopt explicit kind annotations as part of the language, more or less exactly as GHC permits.