class C a where { type T a; foo :: a -> b -> T b; }