type checker plugin does not affect inferred type signatures

adam vogt vogt.adam at gmail.com
Sat Feb 14 10:31:23 UTC 2015


Using ghc-7.10 rc1, I am trying to write a type checker plugin that
adds wanted constraint which helps ghc to infer more types. However,
it seems that the wanted constraints I add don't get added to the
inferred type of the declaration, so that I get a type error like:

a.hs:1:1: Warning:
    Could not deduce (SameLength y x) arising from an application
    from the context (HLength x ~ HLength y)
      bound by the inferred type of
               p :: (HLength x ~ HLength y) => Proxy '(y, x)
      at a.hs:11:1-69

I think ghc should be able to figure out p :: (SameLength x y, HLength
x ~ HLength y) => Proxy '(x,y).

The code is self-contained:

git clone https://github.com/aavogt/HListPlugin

cd HListPlugin/ex


Is this approach supposed to be possible, or am I supposed to rewrite
things such that I only produce CtGivenS from the plugin?


More information about the Glasgow-haskell-users mailing list