[GHC] #9301: Rank-2 constraints are assigned kind *

GHC ghc-devs at haskell.org
Sat Jul 12 04:54:24 UTC 2014


#9301: Rank-2 constraints are assigned kind *
------------------------------------+-------------------------------------
       Reporter:  heisenbug         |             Owner:
           Type:  bug               |            Status:  new
       Priority:  normal            |         Milestone:
      Component:  Compiler          |           Version:  7.8.2
       Keywords:                    |  Operating System:  Unknown/Multiple
   Architecture:  Unknown/Multiple  |   Type of failure:  None/Unknown
     Difficulty:  Unknown           |         Test Case:
     Blocked By:                    |          Blocking:
Related Tickets:                    |
------------------------------------+-------------------------------------
 Compile this program with GHC-HEAD (I have 7.9.20140605, but I guess 7.8.3
 will also do):
 {{{
 {-# LANGUAGE RankNTypes #-}

 strangelet :: (forall t . Num t) => ()
 strangelet = \_ -> ()
 }}}

 Very strangely it gets accepted!
 {{{
 *Main> :t strangelet
 strangelet :: (forall t. Num t) -> ()
 }}}
 I suspect that the type checker assigns kind `*` to rank-2 constraints. Of
 course it should assign a `Constraint` kind.

 What I ultimately want is to declare:
 {{{
 foo :: (Monad m, forall n . Num (m n)) => m n
 foo = ...
 }}}
 ..or such. Would that be unreasonable?

 NB: 7.4.2 rejects it (even with `-XConstraintKinds`). I did not try 7.6.3.

--
Ticket URL: <http://ghc.haskell.org/trac/ghc/ticket/9301>
GHC <http://www.haskell.org/ghc/>
The Glasgow Haskell Compiler


More information about the ghc-tickets mailing list