A theory of mixin modules: basic and derived operators

Mixins are modules in which some components are deferred, that is, their definition has to be provided by another module. Moreover, in contrast to parameterized modules (like ML functors), mixin modules can be mutually dependent and their composition supports the redefinition of components (overriding). In this paper, we present a formal model of mixins and their basic composition operators. These operators can be viewed as a kernel language with clean semantics in which one can express more complex operators of existing modular languages, including variants of inheritance in object-oriented programming. Our formal model is given in an ‘institution independent’ way, that is, it is parameterized by the semantic framework modelling the underlying core language.

[1]  Gary Lindstrom,et al.  An Application Framework For Module Composition Tools , 1996, ECOOP.

[2]  Davide Ancona,et al.  An algebra of mixin modules , 1997, WADT.

[3]  Davide Ancona,et al.  MIX(FL): A Kernel Language of Mixin Modules , 2000, AMAST.

[4]  Judicaël Courant,et al.  An Applicative Module Calculus , 1997, TAPSOFT.

[5]  Hartmut Ehrig,et al.  Theory of Algebraic Module Specification including Behavioral Semantics and Constraints , 1991, AMAST.

[6]  Joseph A. Goguen,et al.  Institutions: abstract model theory for specification and programming , 1992, JACM.

[7]  M A R C V A N L I M B E R G H E N,et al.  Encapsulation and composition as orthogonal operators on mixins: a solution to multiple inheritance problems , 1996 .

[8]  Davide Ancona,et al.  Overriding Operators in a Mixin-Based Framework , 1997, PLILP.

[9]  Gilad Bracha,et al.  Modularity meets inheritance , 1992, Proceedings of the 1992 International Conference on Computer Languages.

[10]  Guruduth S. Banavar,et al.  An application framework for compositional modularity , 1995 .

[11]  Michel Bidoit,et al.  Behavioural Satisfaction and Equivalence in Concrete Model Categories , 1996, CAAP.

[12]  Bjarne Stroustrup,et al.  The C++ programming language (2nd ed.) , 1991 .

[13]  Mark P. Jones,et al.  Using parameterized signatures to express modular structure , 1996, POPL '96.

[14]  S. E. Keene,et al.  A programmer's guide to object-oriented programming in Common LISP , 1988 .

[15]  Hartmut Ehrig,et al.  Fundamentals of Algebraic Specification 1: Equations and Initial Semantics , 1985 .

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

[17]  Davide Ancona,et al.  An Algebraic Approach to Mixins and Modularity , 1996, ALP.

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

[19]  Hartmut Ehrig,et al.  Fundamentals of Algebraic Specification 2: Module Specifications and Constraints , 1990 .

[20]  Davide Ancona,et al.  A Formal Framework for Modules with State , 1996, International Conference on Algebraic Methodology and Software Technology.

[21]  Uday S. Reddy,et al.  Objects as closures: abstract semantics of object-oriented languages , 1988, LISP and Functional Programming.

[22]  Elena Zucca From Static to Dynamic Abstract Data-Types , 1996, MFCS.

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

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

[25]  Michele Bugliesi,et al.  A Lambda Calculus of Incomplete Objects , 1996, MFCS.

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

[27]  Hartmut Ehrig,et al.  Categorical principles, techniques and results for high-level-replacement systems in computer science , 1993, Appl. Categorical Struct..

[28]  Donald Sannella,et al.  Specifications in an Arbitrary Institution , 1988, Inf. Comput..

[29]  Horst Herrlich,et al.  Abstract and concrete categories , 1990 .

[30]  Hans-Dieter Ehrich,et al.  Specification of abstract data types , 1996 .

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

[32]  Hartmut Ehrig,et al.  Fundamentals of Algebraic Specification 1 , 1985, EATCS Monographs on Theoretical Computer Science.

[33]  Ole Lehrmann Madsen,et al.  Object-oriented programming in the BETA programming language , 1993 .

[34]  Bertrand Meyer,et al.  Genericity versus inheritance , 1986, OOPLSA '86.

[35]  J. Courant,et al.  A Module Calculus Enjoying the Subject-Reduction Property , 1996 .

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

[37]  Ken Arnold,et al.  The Java Programming Language , 1996 .

[38]  Tom Mens,et al.  Encapsulation and composition as orthogonal operators on mixins: a solution to multiple inheritance problems , 1996, Object Oriented Syst..

[39]  Judicaël Courant,et al.  A Module Calculus for Pure Type Systems , 1997, TLCA.

[40]  Clemens A. Szyperski,et al.  Import is Not Inheritance - Why We Need Both: Modules and Classes , 1992, ECOOP.

[41]  Bjarne Stroustrup,et al.  C++ Programming Language , 1986, IEEE Softw..

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

[43]  Petros S. Stefaneas,et al.  Logical support for modularisation , 1993 .

[44]  David Robson,et al.  Smalltalk-80: The Language and Its Implementation , 1983 .

[45]  T. Broadbent,et al.  Module Algebra , 1970, Nature.

[46]  簡聰富,et al.  物件導向軟體之架構(Object-Oriented Software Construction)探討 , 1989 .

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