User:Zzo38/Proposal for additional kinds: Difference between revisions
No edit summary |
No edit summary |
||
Line 20: | Line 20: | ||
It also means a type of kind <tt>+ -> + -> +</tt> can be a type of adding numbers or other stuff like that, too. | It also means a type of kind <tt>+ -> + -> +</tt> can be a type of adding numbers or other stuff like that, too. | ||
==See also== | |||
* [http://hackage.haskell.org/trac/ghc/wiki/KindFact KindFact] | |||
[[Category:Proposals]] | [[Category:Proposals]] |
Revision as of 01:50, 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.