[GHC] #8090: MetaKinds - PolyKinds generalization

GHC ghc-devs at haskell.org
Thu Jul 25 08:34:48 CEST 2013


#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




More information about the ghc-tickets mailing list