[Haskell-cafe] Rank N Kinds
Wvv
vitea3v at rambler.ru
Fri Jul 26 22:42:07 CEST 2013
It was discussed a bit here:
http://ghc.haskell.org/trac/ghc/ticket/8090
Rank N Kinds:
Main Idea is:
If we assume an infinite hierarchy of classifications, we have
True :: Bool :: * :: ** :: *** :: **** :: ...
Bool = False, True, ...
* = Bool, Sting, Maybe Int, ...
** = *, *->Bool, *->(*->*), ...
*** = **, **->*, (**->**)->*, ...
...
RankNKinds is also a part of lambda-cube.
PlyKinds is just type of ** (Rank2Kinds)
class Foo (a :: k) where <<==>> class Foo (a :: **) where
*** is significant to work with ** data and classes;
more general: Rank(N)Kinds is significant to work with Rank(N-1)Kinds
First useful use is in Typeable.
In GHC 7.8
class Typeable (a::k) where ... <<==>> class Typeable (a ::**) where ...
But we can't write
data Foo (a::k)->(a::k)->* ... deriving Typeable
If we redeclare
class Typeable (a ::***) where ...
or even
class Typeable (a ::******) where ...
it becomes far enough for many years
I'm asking to find other useful examples
--
View this message in context: http://haskell.1045720.n5.nabble.com/Rank-N-Kinds-tp5733482.html
Sent from the Haskell - Haskell-Cafe mailing list archive at Nabble.com.
More information about the Haskell-Cafe
mailing list