Mixin modules in a call-by-value setting

The ML module system provides powerful parameterization facilities, but lacks the ability to split mutually recursive definitions across modules, and does not provide enough facilities for incremental programming. A promising approach to solve these issues is Ancona and Zucca's mixin modules calculus CMS. However, the straightforward way to adapt it to ML fails, because it allows arbitrary recursive definitions to appear at any time, which ML does not support. In this paper, we enrich CMS with a refined type system that controls recursive definitions through the use of dependency graphs. We then develop a separate compilation scheme, directed by dependency graphs, that translate mixin modules down to a CBV ?-calculus extended with a non-standard let rec construct.

[1]  Gilad Bracha,et al.  The programming language jigsaw: mixins, modularity and multiple inheritance , 1992 .

[2]  Nathanael Schärli,et al.  Applying traits to the smalltalk collection classes , 2002, OOPSLA '03.

[3]  Martín Abadi,et al.  A Theory of Objects , 1996, Monographs in Computer Science.

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

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

[6]  Tom Hirschowitz,et al.  Call-by-Value Mixin Modules: Reduction Semantics, Side Effects, Types , 2004, ESOP.

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

[8]  Luca Cardelli,et al.  Program fragments, linking, and modularization , 1997, POPL '97.

[9]  BrachaGilad,et al.  Mixin-based inheritance , 1990 .

[10]  Ôôöøøññòøó Áòòóöññøø,et al.  A Primitive Cal ulus for Module Systems ? , 1999 .

[11]  Tom Hirschowitz,et al.  Compilation of extended recursion in call-by-value functional languages , 2003, PPDP '03.

[12]  Joe B. Wells,et al.  Equational Reasoning for Linking with First-Class Primitive Modules , 2000, ESOP.

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

[14]  Tom Hirschowitz Modules mixins, modules et récursion étendue en appel par valeur , 2003 .

[15]  Davide Ancona,et al.  A Primitive Calculus for Module Systems , 1999, PPDP.

[16]  David A. Moon,et al.  Object-oriented programming with flavors , 1986, OOPLSA '86.

[17]  R. Harper,et al.  Toward a Practical Type Theory for Recursive Modules , 2001 .

[18]  William R. Cook,et al.  A denotational semantics of inheritance , 1989 .

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

[20]  Davide Ancona,et al.  Modular Formal Frameworks for Module Systems , 1998 .

[21]  Dominic Duggan,et al.  Mixin modules , 1996, ICFP '96.

[22]  Davide Ancona,et al.  A calculus of module systems , 2002, J. Funct. Program..

[23]  Robert Bruce Findler,et al.  Modular object-oriented programming with units and mixins , 1998, ICFP '98.

[24]  Pierre-Louis Curien,et al.  The Categorical Abstract Machine , 1987, Sci. Comput. Program..

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

[26]  William R. Cook,et al.  Mixin-based inheritance , 1990, OOPSLA/ECOOP '90.

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

[28]  Stefan Blom,et al.  Skew confluence and the lambda calculus with letrec , 2002, Ann. Pure Appl. Log..

[29]  Matthias Felleisen,et al.  Classes and mixins , 1998, POPL '98.

[30]  Michele Bugliesi,et al.  A Subtyping for Extensible, Incomplete Objects , 1999, Fundam. Informaticae.

[31]  Gérard Boudol The Recursive Record Semantics of Objects Revisited , 2001, ESOP.