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