The following code doesn't compile, but it seems sensible enough to me.  Is this a limitation of GHC or is there something I'm missing?

class C (A x) => C x where
  type A x :: *

instance C Int where
  type A Int = String

instance C String where
  type A String = Int

The error I get is:

SuperclassCycle.hs:1:1:
    Cycle in class declarations (via superclasses):
      SuperclassCycle.hs:(1,1)-(2,15): class C (A x) => C x where {
                                           type family A x :: *; }


Ryan