We present a variant of the Standard ML module system rameterized abstract types (i.e. functors returning generative types) map provably equal arguments to compattract types, instead of generating distinct types at each application as in Standard ML. This extension solves the full transparency problem (how to give syntactic signatures for higher-order functors that express exactly their propagation of type equations), and also provides better support for non-closed code fragments.