class C a where { type T a b; } data D a = D a; instance C Int where { type T Int b = T b; } foo :: T Int; foo = D 42;