unit p where signature A where data S type T = S unit q where signature A where data T type S = T unit r where dependency p[A=] dependency q[A=] module M where import A x :: S x = undefined