November 2017
Intermediate to advanced
670 pages
17h 35m
English
Functors in Haskell must have the kind * -> *. Kinds are another layer of types, above the concrete types in Haskell. Kinds allow us to define what behavior types are capable of and then connect them with the appropriate type classes. For example, an Int can act like a showable, readable, ordered, or enumerable thing. Values in Haskell can be classified by their type. Let's use Haskell's concise syntax to look at some examples:
|
Type(Class) |
__Kind__ |
Description |
|
Int |
* |
* represents concrete types (such as Bool, Char, or Int). |
|
Char |
* |
* represents concrete types (such as Bool, Char, or Int). |
|
[] |
* -> * |
[] takes a single type of kind * and returns a new type of kind *. |
|
Maybe |
* -> * |
A higher-kinded ... |