[GHC] #10481: raise# should have an open kind in its return type

GHC ghc-devs at haskell.org
Thu Jun 4 02:51:46 UTC 2015


#10481: raise# should have an open kind in its return type
-------------------------------------+-------------------------------------
              Reporter:  gridaphobe  |             Owner:
                  Type:  bug         |            Status:  new
              Priority:  low         |         Milestone:
             Component:  Compiler    |           Version:  7.11
              Keywords:              |  Operating System:  Unknown/Multiple
          Architecture:              |   Type of failure:  None/Unknown
  Unknown/Multiple                   |        Blocked By:
             Test Case:              |   Related Tickets:
              Blocking:              |
Differential Revisions:              |
-------------------------------------+-------------------------------------
 I noticed this while working on https://phabricator.haskell.org/D861.
 `error` has a wired-in type

 {{{#!hs
 error :: forall (a :: OpenKind). String -> a
 }}}

 and an implementation

 {{{#!hs
 error :: String -> a
 error s = raise# (errorCallException s)
 }}}

 But GHC will actually reject the definition of `error` if you check it
 against the wired-in type as `raise#` has a lifted kind.

 The only reason we can compile `base` is that open kinds cannot be
 expressed in Haskell source, so when GHC compiles `GHC.Err` it thinks
 `error` has a lifted kind, but for every other module it uses the wired-in
 type with an open kind.

 I'm marking this as low priority because I don't see how it could affect
 anyone outside of GHC developers, since open kinds aren't expressible in
 the source language.

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


More information about the ghc-tickets mailing list