I've read a lot of interesting things about type kinds, higher-kinded types and so on. By default Haskell supports two sorts of kind:
- Simple type:
*
- Type constructor:
* → *
Latest GHC's language extensions ConstraintKinds adds a new kind:
- Type parameter constraint:
Constraint
Also after reading this mailing list it becomes clear that another type of kind may exists, but it is not supported by GHC (but such support is implemented in .NET):
- Unboxed type:
#
I've learned about polymorphic kinds and I think I understand the idea. Also Haskell supports explicitly-kinded quantification.
So my questions are:
- Do any other types of kinds exists?
- Are there any other kind-releated language features?
- What does
subkinding
mean? Where is it implemented/useful? - Is there a type system on top of
kinds
, likekinds
are a type system on top oftypes
? (just interested)