[GHC] #9123: Emit quantified Coercible constraints in GeneralizedNewtypeDeriving (was: Need for higher kinded roles)
GHC
ghc-devs at haskell.org
Tue Jun 19 13:30:08 UTC 2018
#9123: Emit quantified Coercible constraints in GeneralizedNewtypeDeriving
-------------------------------------+-------------------------------------
Reporter: simonpj | Owner: (none)
Type: bug | Status: new
Priority: normal | Milestone: 8.6.1
Component: Compiler (Type | Version: 7.8.2
checker) | Keywords: Roles,
Resolution: | QuantifiedConstraints
Operating System: Unknown/Multiple | Architecture:
| Unknown/Multiple
Type of failure: None/Unknown | Test Case: quantified-
| constraints/T9123{,a}
Blocked By: 15290 | Blocking:
Related Tickets: | Differential Rev(s):
Wiki Page: |
-------------------------------------+-------------------------------------
Comment (by RyanGlScott):
Ah, quite right. Since we have "higher kinded roles" currently (in some
sense) due to `QuantifiedConstraints`, I'll change the title of this
ticket to reflect its new goal.
Speaking of which, let's talk about what it would take to actually
accomplish this. I've been inclined to try implementing this myself, but
every time I get started, I quickly get lost in the weeds. Assuming that
#15290 were fixed, what would it take to train the constraint solver to
spit out quantified `Coercible` constraints? My understanding of GHC's
constraint solver (which, admittedly, is quite limited) is that it will
//never// emit a quantified constraint under any circumstances. Would we
have to change this invariant somewhere? Also, would we be feeding a
constraint like `forall p q. Coercible p q => Coercible (m p) (m q)` as an
input to the constraint solver? Or would it only be an output?
I'm afraid I don't really know where to look to answer these questions, so
advice would be greatly appreciated.
--
Ticket URL: <http://ghc.haskell.org/trac/ghc/ticket/9123#comment:60>
GHC <http://www.haskell.org/ghc/>
The Glasgow Haskell Compiler
More information about the ghc-tickets
mailing list