applicative functors and fully transparent higher-order modules
we present a variety of the Standard ML module system where parameterized abstract types (i.e. functors returning generative types) map provably equal arguments to compatible abstract types, instead of generating distinct types at each applications 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.
applications transparency module standardization systems abstraction types generation argument extensibility signature propagation support code fragmentation  ml  order