Difference between revisions of "User:Zzo38/Proposal for additional kinds"
Jump to navigation
Jump to search
Line 3: | Line 3: | ||
==New kinds== |
==New kinds== |
||
## -- New name for (#) kind (although (#) is available for compatibility) |
## -- New name for (#) kind (although (#) is available for compatibility) |
||
− | + | & -- Kind for classes |
|
+ -- Kind for type-level natural numbers |
+ -- Kind for type-level natural numbers |
||
$ -- Means make up a kind from a Template Haskell code |
$ -- Means make up a kind from a Template Haskell code |
||
Line 9: | Line 9: | ||
==Kind of classes== |
==Kind of classes== |
||
Example: |
Example: |
||
− | + | * -> & -- Kind of Eq class. |
|
− | + | (* -> *) -> & -- Kind of Monad class. |
|
+ | (* -> &) -> & -- Class of classes. |
||
− | * -> [*] -- A class that requires a type as a parameter to make a class. |
||
− | + | + -> * -> & -- Infinite series of classes, selected by a natural number. |
|
− | + -> [*] -- Infinite series of classes, selected by a natural number. |
||
− | k -> [k] -- Polymorphic class that corresponds to any given kind. |
||
− | <!-- <b></b> means make it appear correctly on HTML view --> |
||
==Natural number kind== |
==Natural number kind== |
Revision as of 01:48, 5 September 2011
This document is proposal about additional kinds.
New kinds
## -- New name for (#) kind (although (#) is available for compatibility) & -- Kind for classes + -- Kind for type-level natural numbers $ -- Means make up a kind from a Template Haskell code
Kind of classes
Example:
* -> & -- Kind of Eq class. (* -> *) -> & -- Kind of Monad class. (* -> &) -> & -- Class of classes. + -> * -> & -- Infinite series of classes, selected by a natural number.
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.
It also means a type of kind + -> + -> + can be a type of adding numbers or other stuff like that, too.