
#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): Additional propositions: (I) We already have a little hell with parentheses. We have {{{ infixr 9 (::) }}} I suggest to have {{{ infixr 0 (::`) }}} And we could easily write {{{ let s = "Hello" ::` String ++ " world" ::` [Char] :: String let i ::` Int = 2 class Foo a ::` k ::` * b ::` * where ... }}} (II) For rankNkinds will be useful if we have {{{ foo :: (a :: (k :: *)) -> (a :: (k :: *)) -> b }}} is Ok. But next is not: {{{ class Typeable (a :: (k :: *)) where ... (without k) ... }}} Solution is to have "many stars": {{{ data Foo ** -> ** -> * where ... class Typeable (a :: **) where ... class TypeableOmega (a :: *******) where ... }}} -- Ticket URL: http://ghc.haskell.org/trac/ghc/ticket/8090#comment:4 GHC http://www.haskell.org/ghc/ The Glasgow Haskell Compiler