# User:Zzo38/Proposal for additional kinds

### From HaskellWiki

< User:Zzo38(Difference between revisions)

(New page: This document is proposal about additional kinds. ==New kinds== ## -- New name for (#) kind (although (#) is available for compatibility) [x] -- If x is a kind, [x] is the kind...) |
|||

Line 11: | Line 11: | ||

[* -> *] -- Kind of Monad class. |
[* -> *] -- Kind of Monad class. |
||

* -> [*] -- A class that requires a type as a parameter to make a class. |
* -> [*] -- A class that requires a type as a parameter to make a class. |
||

− | [[*]] -- Class of classes. |
+ | [<b></b>[*]] -- Class of classes. |

+ | <!-- <b></b> means make it appear correctly on HTML view --> |
||

==Natural number kind== |
==Natural number kind== |

## Revision as of 20:30, 3 September 2011

This document is proposal about additional kinds.

## 1 New kinds

## -- New name for (#) kind (although (#) is available for compatibility) [x] -- If x is a kind, [x] is the kind of classes of types of kind x + -- Kind for type-level natural numbers

## 2 Kind of classes

Example:

[*] -- Kind of Eq class. [* -> *] -- Kind of Monad class. * -> [*] -- A class that requires a type as a parameter to make a class. [[*]] -- Class of classes.

## 3 Natural number kind

If a type requires a parameter, it can be a `+` kind, meaning numbers.

There should be some way to specify a type taking natural numbers by defining it for zero and them for a successor, so that it applies for all natural numbers.