Difference between revisions of "User:Zzo38/Proposal for additional kinds"

From HaskellWiki
Jump to navigation Jump to search
Line 18: Line 18:
   
 
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.
 
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 <tt>+ -> + -> +</tt> can be a type of adding numbers or other stuff like that, too.
   
 
[[Category:Proposals]]
 
[[Category:Proposals]]

Revision as of 20:38, 3 September 2011

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 of classes of types of kind x
+       -- Kind for type-level natural numbers

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.

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.