I wonder if I am dealing with bugs in the type checker (replying to myself).<br><div><p>
Curiously if I have
</p>
<pre>class FunctorF d where<br> fmapF :: d -> (x -> y) -> F d x -> F d y<br><br>fff a = fmapF a id<br></pre><p>
it compiles correctly. If I infer the type signature of fff I get
</p>
<pre>fff :: forall d x. (FunctorF d) => d -> F d x -> F d x<br></pre><p>
On the other side, it fails to compile when this signature is explicit:<br>
</p>
<pre>fff :: forall d x. (FunctorF d) => d -> F d x -> F d x<br>fff a = fmapF a id<br><br>I am repeating myself in <a href="http://hackage.haskell.org/trac/ghc/ticket/2157#comment:6">http://hackage.haskell.org/trac/ghc/ticket/2157#comment:6</a>.<br>
<br>Sorry for the cascaded messages,<br>hugo<br></pre><p><br>
</p>
</div><br>