[GHC] #13140: Handle subtyping relation for roles in Backpack

GHC ghc-devs at haskell.org
Tue Feb 28 08:20:33 UTC 2017


#13140: Handle subtyping relation for roles in Backpack
-------------------------------------+-------------------------------------
        Reporter:  ezyang            |                Owner:  ezyang
            Type:  feature request   |               Status:  patch
        Priority:  normal            |            Milestone:  8.4.1
       Component:  Compiler (Type    |              Version:  8.1
  checker)                           |             Keywords:  backpack hs-
      Resolution:                    |  boot
Operating System:  Unknown/Multiple  |         Architecture:
                                     |  Unknown/Multiple
 Type of failure:  None/Unknown      |            Test Case:
      Blocked By:                    |             Blocking:
 Related Tickets:                    |  Differential Rev(s):  Phab:D3123
       Wiki Page:                    |
-------------------------------------+-------------------------------------

Comment (by ezyang):

 Here's another way to think about app-roles and proj-roles.

 Previously, we thought of roles as a single thing you ascribe to a type
 parameter. But it would be more accurate to say that a type parameter is
 given a role ''range'', which specifies the possible set of underlying
 roles that the type may be implemented with. For example, the range
 "phantom to nominal" says that the type could be implemented in a way that
 treats the type variable phantom, representationally, or nominally: this
 is the most flexible for the implementor and gives the least information
 to the client. Or you can say that it is "exactly" nominal: this gives the
 most information to the client. `type role T nominal; newtype T a = MkT a`
 gets "representational to nominal": the annotation sets the upper bound,
 but the lower bound has to actually include the true role which a is used
 at.

 Of course, when I say lower bound, I mean proj-role, and when I say upper-
 bound, I mean app role. (I also apologize for flipping the subroling
 order.)

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


More information about the ghc-tickets mailing list