[GHC] #15009: Float equalities past local equalities
GHC
ghc-devs at haskell.org
Mon Nov 5 15:44:38 UTC 2018
#15009: Float equalities past local equalities
-------------------------------------+-------------------------------------
Reporter: goldfire | Owner: (none)
Type: feature request | Status: closed
Priority: normal | Milestone: 8.4.3
Component: Compiler | Version: 8.2.2
Resolution: fixed | Keywords:
Operating System: Unknown/Multiple | Architecture:
| Unknown/Multiple
Type of failure: None/Unknown | Test Case: gadt/T15009
Blocked By: | Blocking:
Related Tickets: | Differential Rev(s):
Wiki Page: |
-------------------------------------+-------------------------------------
Comment (by nfrisby):
If I correctly understand what the "inert substitution" is, then I think I
can summarize the intent of my draft rule as follows.
> Let dis[i] be the domain of the inert substitution active in the wanteds
of TcLevel i. We can safely float a wanted CTyEqCan {{{w : alpha[L] ~
<t>}}} from level K to level L if dis[K] can never change (which implies
dis[L] can never change -- ie no CTyEqCan might flip to reveal a new LHS)
and if dis[K] - dis[L] does not include any metavars, any flattening
skolems, or any skolems of level <= L.
--
Ticket URL: <http://ghc.haskell.org/trac/ghc/ticket/15009#comment:21>
GHC <http://www.haskell.org/ghc/>
The Glasgow Haskell Compiler
More information about the ghc-tickets
mailing list