Kinds in Haskell
1. Kinds
Think of kinds as the type of a type. The * symbol represents a concrete type. A type constructor has a kind. For example, a type constructor which takes a concrete type as a type argument, has the kind * -> *
. The type constructor for Tree
has the kind * -> *
. No value has a type Tree
, but there are values which have an a type Tree Int
, for instance.
We use :k
to get the kind of a type.