# 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.