Skip to content

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
To upload designs, you'll need to enable LFS and have an admin enable hashed storage. More information