Re: [GHC] #2850: GeneralizedNewtypeDeriving + TypeFamilies doesn't work

#2850: GeneralizedNewtypeDeriving + TypeFamilies doesn't work -------------------------------------------------+------------------------- Reporter: ajd | Owner: Type: feature request | Status: Priority: normal | closed Component: Compiler | Milestone: 6.12 Resolution: fixed | branch Operating System: Unknown/Multiple | Version: Type of failure: None/Unknown | 6.10.1 Test Case: | Keywords: indexed_types/should_compile/T2850 | Architecture: Blocking: | Unknown/Multiple | Difficulty: | Unknown | Blocked By: | Related Tickets: -------------------------------------------------+------------------------- Comment (by goldfire): Interesting corner case. Answer: perhaps, but it would take a little more engineering. The problem is that `B`'s role is very rightly nominal. It's perfectly conceivable for `B Age` and `B Int` to be unrelated. But, we still want `B Bool ~R B Int`. The way this might be possible is by using the ''representation'' tycons for data families before doing the `Coercible` stuff. And, it means that these representation tycons would also need to be given appropriate roles. Currently, they're all nominal (see [http://git.haskell.org/ghc.git/blob/HEAD:/compiler/typecheck/TcInstDcls.lhs#... the source code]). This all seems quite possible, but as I said, somewhat more engineering to make work. I can take a look at inferring roles for data/newtype instances. (I suppose these means also making role signatures for these forms. Grrrr.....) Do you think it's possible for the `Coercible` stuff to work over representation tycons for data/newtype instances? -- Ticket URL: http://ghc.haskell.org/trac/ghc/ticket/2850#comment:7 GHC http://www.haskell.org/ghc/ The Glasgow Haskell Compiler
participants (1)
-
GHC