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 -&gt; (x -&gt; y) -&gt; F d x -&gt; 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) =&gt; d -&gt; F d x -&gt; 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) =&gt; d -&gt; F d x -&gt; 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>