title: Having to open quantified type class evidence manually?
body: <p>Does one have to manually open the evidence like in <code>prj'</code> or is there a more direct way to guide the instance solver ?</p>
  <pre class="lang-hs prettyprint-override"><code>{-# LANGUAGE QuantifiedConstraints #-}
  {-# LANGUAGE UndecidableInstances #-}
  
  module CatLib.SO.SO_TCMatchingDict where
  
  class OneSide a where oneSide :: a
  
  class (OneSide a {- , ManyOtherTC a -}) =&gt; TC a
  instance (OneSide a {- , ManyOtherTC a -}) =&gt; TC a
  
  class Other f where other :: forall a. f a
  
  instance Other f =&gt; OneSide (f x) where oneSide = other
  
  
  prj :: forall f a. (forall x. TC (f x)) =&gt; f a
  prj = oneSide @(f a) -- Could not deduce (Other f) arising from a use of ‘oneSide’
  
  prj' :: forall f g tag a b. (forall x. TC (f x)) =&gt; f a
  prj' = case Dict :: Dict (TC (f a)) of
    Dict -&gt; oneSide @(f a) -- that's ok
  
  data Dict c = c =&gt; Dict
  </code></pre>