title: Can I magic up type equality from a functional dependency?
body: <p>I'm trying to get some sense of <code>MultiParamTypeClasses</code> and <code>FunctionalDependencies</code>, and the following struck me as an obvious thing to try:</p>
  
  <pre><code>{-# LANGUAGE MultiParamTypeClasses
             , FunctionalDependencies
             , TypeOperators #-}
  
  import Data.Type.Equality
  
  class C a b | a -&gt; b
  
  fob :: (C a b, C a b') =&gt; proxy a -&gt; b :~: b'
  fob _ = Refl
  </code></pre>
  
  <p>Unfortunately, this doesn't work; GHC does not conclude <code>b ~ b'</code> from that context. Is there any way to make this work, or is the functional dependency not "internally" available?</p>