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