
#8090: MetaKinds - PolyKinds generalization -------------------------------------+------------------------------------ Reporter: wvv | Owner: Type: feature request | Status: new Priority: normal | Milestone: Component: Compiler | Version: 7.6.3 Resolution: | Keywords: Operating System: Unknown/Multiple | Architecture: Unknown/Multiple Type of failure: None/Unknown | Difficulty: Unknown Test Case: | Blocked By: Blocking: | Related Tickets: -------------------------------------+------------------------------------ Comment (by wvv): {{{ True :: Bool :: * :: ** :: *** :: **** :: ... }}} This is nice! --- Any rankNkinds is significant to work with rank(N-1)kinds data and classes only! 'a' is exists anyway - this is exactly type. In {{{class Typeable3 (a :: ***) where ...}}} 'm' isn't significant at all. Is significant to type any rank2kinds data. But is significant in {{{ foo :: (a :: (k :: (m :: ***))) -> (a :: (k :: (m :: ***))) -> b -- same first and second args class Foo (a :: (k :: (m :: ***))) where data Bar :: (m :: ***) data Baz :: (k :: **) ... }}} Let we have {{{ data HomoCategory a :: (k :: **) -> a :: (k :: **) -> * where ... data HeteroCategory (a :: **) -> (b :: **) -> * where ... class AnyCategory (a :: ***) where ... instance AnyCategory HomoCategory where ... instance AnyCategory HeteroCategory where ... }}} Nothing extraordinary is in the right, just Haskell: {{{ class AnyCategory (a :: ***) where id :: (a :: ***) -> (a :: ***) id a = a }}} -- Ticket URL: http://ghc.haskell.org/trac/ghc/ticket/8090#comment:6 GHC http://www.haskell.org/ghc/ The Glasgow Haskell Compiler