[GHC] #11457: Run type-checker plugins before GHC's solver

GHC ghc-devs at haskell.org
Wed Jan 20 13:07:00 UTC 2016


#11457: Run type-checker plugins before GHC's solver
-------------------------------------+-------------------------------------
        Reporter:  gridaphobe        |                Owner:
            Type:  feature request   |               Status:  new
        Priority:  normal            |            Milestone:  8.0.1
       Component:  Compiler (Type    |              Version:  8.0.1-rc1
  checker)                           |
      Resolution:                    |             Keywords:  plugin
Operating System:  Unknown/Multiple  |         Architecture:
                                     |  Unknown/Multiple
 Type of failure:  None/Unknown      |            Test Case:
      Blocked By:                    |             Blocking:
 Related Tickets:                    |  Differential Rev(s):
       Wiki Page:                    |
-------------------------------------+-------------------------------------

Comment (by adamgundry):

 Indeed, rejecting potentially-solvable constraints would be a bit tricky
 to do accurately, because of the intertwining of different kinds of
 constraint solving. It should be easy to run the plugins first and permit
 them to reject dictionary constraints that have arisen directly from the
 source, but it's not clear that is very useful because many constraints
 arise during solving. (Moreover, this would not work for equality
 constraints, because those are handled eagerly by the unifier.)

 I suppose one could imagine an alternative architecture for plugins that
 gave them each new constraint as GHC generated it, which would be capable
 of doing this, but would be much more deeply tied into GHC's constraint-
 solving algorithm.

 Another possibility we've considered in the past is making it possible for
 a plugin to replace GHC's entire constraint solver pipeline. That could be
 interesting from the point of view of experimenting with alternative
 constraint-solving algorithms, but I'm not sure how feasible it is.

 For this specific feature request, I suspect it would be easier to do it
 inside GHC itself, by checking for suppression pragmas during instance
 lookup.

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


More information about the ghc-tickets mailing list