A type system for higher-order modules

We present a type theory for higher-order modules that accounts for many central issues in module system design, including translucency, applicativity, generativity, and modules as first-class values. Our type system harmonizes design elements from previous work, resulting in a simple, economical account of modular programming. The main unifying principle is the treatment of abstraction mechanisms as computational effects. Our language is the first to provide a complete and practical formalization of all of these critical issues in module system design.

[1]  Derek Dreyer,et al.  A type system for well-founded recursion , 2004, POPL.

[2]  Todd D. Millstein,et al.  Modular typechecking for hierarchically extensible datatypes and functions , 2002, ICFP '02.

[3]  Claudio V. Russo Recursive Structures for Standard ML , 2001, ICFP.

[4]  Robert Harper,et al.  A type-theoretic interpretation of standard ML , 2000, Proof, Language, and Interaction.

[5]  Xavier Leroy,et al.  A modular module system , 2000, J. Funct. Program..

[6]  Claudio V. Russo First-Class Structures for Standard ML , 2000, Nord. J. Comput..

[7]  Robert Harper,et al.  Abstract 1 Introduction , 2022 .

[8]  R. Harper,et al.  Singleton kinds and singleton types , 2000 .

[9]  Zhong Shao Transparent modules with fully syntatic signatures , 1999, ICFP '99.

[10]  Karl Crary,et al.  What is a recursive module? , 1999, PLDI '99.

[11]  Claudio V. Russo Types for Modules , 2004, Electronic Notes in Theoretical Computer Science.

[12]  Robert Harper,et al.  Transparent and Opaque Interpretations of Datatypes , 1998 .

[13]  Matthias Felleisen,et al.  Units: cool modules for HOT languages , 1998, PLDI.

[14]  Benjamin C. Pierce,et al.  Bounded Existentials and Minimal Typing , 1998, Theor. Comput. Sci..

[15]  M. Lillibridge Translucent Sums: A Foundation for Higher-Order Module Systems , 1997 .

[16]  David Aspinall,et al.  Type systems for modular programs and specifications , 1997 .

[17]  Xavier Leroy,et al.  A syntactic theory of type generativity and sharing , 1996, Journal of Functional Programming.

[18]  Xavier Leroy,et al.  Applicative functors and fully transparent higher-order modules , 1995, POPL '95.

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

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

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

[22]  Benjamin C. Pierce,et al.  Bounded quantification is undecidable , 1992, POPL '92.

[23]  John C. Mitchell,et al.  An extension of standard ML modules with subtyping and inheritance , 1991, POPL '91.

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

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

[26]  John C. Mitchell,et al.  Higher-order modules and the phase distinction , 1989, POPL '90.

[27]  Luca Cardelli,et al.  The Modula–3 type system , 1989, POPL '89.

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

[29]  V. Stavridou,et al.  Abstraction and specification in program development , 1988 .

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

[31]  Niklaus Wirth,et al.  Programming in Modula-2 , 1985, Texts and Monographs in Computer Science.

[32]  Warren D. Goldfarb,et al.  The Undecidability of the Second-Order Unification Problem , 1981, Theor. Comput. Sci..

[33]  J. Y. Girard,et al.  Interpretation fonctionelle et elimination des coupures dans l'aritmetique d'ordre superieur , 1972 .