
#9821: DeriveAnyClass support for higher-kinded classes + some more comments -------------------------------------+------------------------------------- Reporter: dreixel | Owner: dreixel Type: bug | Status: patch Priority: normal | Milestone: 8.2.1 Component: Compiler | Version: 7.9 Resolution: | Keywords: Generics Operating System: Unknown/Multiple | Architecture: | Unknown/Multiple Type of failure: None/Unknown | Test Case: Blocked By: | Blocking: Related Tickets: #5462, #9968, | Differential Rev(s): Phab:D2961 #12144 | Wiki Page: | -------------------------------------+------------------------------------- Comment (by simonpj):
but it talks about inferring most general types, which I'm not sure is relevant to this story or not
Yes it's relevant. In inferring "???" we are indeed trying to infer the most general type for the instances. We seek the context with fewest constraints (i.e. most general). The equalities thing doesn't matter much, but for consistency with `simplifyInfer` set it to `True`.
What are CX and RC here?
Also, should I interpret this as meaning that if there are any implication constraints leftover after solving which contain something of
I defined them earlier in the text you quoted! RC = residual context, CX is what we decide ??? should be. the form forall x. C => Foo x (i.e., if there are constraints which contain type variables other than the class's type variables), that should be an error? Yes, certainly. Notice that `approximateWC` doesn't remove the constraints it floats out; it just floats them out. They are still there in RC; but we'll solve them easily from CX.
Do we already take care of this with these lines in TcDerivInfer:
I'm not sure.. too much is in flux. But you don't need to solve it because you don't need to know the answer here: just emit it and it'll get solved later.
Are you saying that I should literally use simplifyInfer to solve these implications
No: sharing code with `simplifyInfer` in due course would be a good plan, but it does a lot more so just use it as a source of inspiration, no more. -- Ticket URL: http://ghc.haskell.org/trac/ghc/ticket/9821#comment:16 GHC http://www.haskell.org/ghc/ The Glasgow Haskell Compiler