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.

[1]  Luca Cardelli,et al.  Typeful Programming , 1989, Formal Description of Programming Concepts.

[2]  John C. Mitchell,et al.  Abstract types have existential type , 1988, TOPL.

[3]  John C. Reynolds,et al.  Types, Abstraction and Parametric Polymorphism , 1983, IFIP Congress.

[4]  Robin Milner,et al.  A Type Discipline for Program Modules , 1987, TAPSOFT, Vol.2.

[5]  Mads Tofte,et al.  A Semantics for Higher-Order Functors , 1994, ESOP.

[6]  Luca Cardelli,et al.  Persistence and Type Abstraction , 1985, Data Types and Persistence , Informal Proceedings.

[7]  Ronald Morrison,et al.  Data Types and Persistence , 1988 .

[8]  Mark Lillibridge,et al.  A type-theoretic approach to higher-order modules with sharing , 1994, POPL '94.

[9]  John C. Mitchell,et al.  On the type structure of standard ML , 1993, TOPL.

[10]  Luca Cardelli,et al.  Abstract Types and the Dot Notation , 1990, Programming Concepts and Methods.

[11]  David B. MacQueen Using dependent types to express modular structure , 1986, POPL '86.

[12]  Andrew W. Appel,et al.  Separate compilation for Standard ML , 1994, PLDI '94.

[13]  John C. Mitchell,et al.  On the Equivalence of Data Representations , 1991, Artificial and Mathematical Theory of Computation.

[14]  Robin Milner,et al.  Definition of standard ML , 1990 .

[15]  Sandip K. Biswas Higher-order functors with transparent signatures , 1995, POPL '95.

[16]  Xavier Leroy,et al.  Manifest types, modules, and separate compilation , 1994, POPL '94.