Run type-checker plugins before GHC's solver
Here's an odd use-case for type-checker plugins: rejecting valid programs that the user doesn't like, for example, programs that use a class instance with confusing behavior (like the functor/traversable instances on tuples).
Unfortunately, we can't write such a plugin at the moment because GHC runs its own solver first, and will (I think) discharge any dictionary constraints before the plugin can run. If instead we run the plugins first, a plugin could mark undesired instances as insoluble.
See the discussion at http://mail.haskell.org/pipermail/libraries/2016-January/026602.html for the original motivation.
Thoughts?
Trac metadata
Trac field | Value |
---|---|
Version | 8.0.1-rc1 |
Type | FeatureRequest |
TypeOfFailure | OtherFailure |
Priority | normal |
Resolution | Unresolved |
Component | Compiler (Type checker) |
Test case | |
Differential revisions | |
BlockedBy | |
Related | |
Blocking | |
CC | adamgundry, diatchki |
Operating system | |
Architecture |