How to resolve overlapping instance
<p>I have the following code (transform is similar to convert)</p>

<pre><code>instance {-# OVERLAPS #-} Transformable a a where
  transform x = x

instance {-# OVERLAPPABLE #-} (Transformable l l',   Transformable r r' )
         =&gt; Transformable (Either l r) (Either l' r')
  where
    transform = bimap transform transform
</code></pre>

<p>Of course, those instances overlap in the case where I'm trying to transform <code>Either a b</code> to <code>Either a b</code> and get the following error message (<code>ParsingError</code> is a type alias for <code>Either something somethingElse</code>)</p>

<pre><code>    Overlapping instances for Transformable
                                (parsingerror text) (parsingerror text)
      arising from a use of ‘makereceipt’
    matching instances:
Matching instances:    Overlapping instances for Transformable
                            (ParsingError Text) (ParsingError Text)
  arising from a use of ‘makeReceipt’
Matching instances:
  instance [overlappable] (Transformable l l', Transformable r r') =&gt;
                          Transformable (Either l r) (Either l' r')
      instance [overlappable] (Transformable l l', Transformable r r') =&gt;
                              Transformable (Either l r) (Either l' r')
        -- Defined at Handler/GLEnterReceiptSheet/ReceiptRow.hs:154:31
      instance [overlap ok] Transformable a a
        -- Defined at Handler/GLEnterReceiptSheet/ReceiptRow.hs:151:27
</code></pre>

<p>I tried different combination of <code>OVERLAPS</code>, <code>OVERLAPPING</code> and <code>OVERLAPPABLE</code> but nothing works. How can I solve this ? </p>