A calculus of module systems

  • Authors:
  • Davide Ancona;Elena Zucca

  • Affiliations:
  • Dipartimento di Informatica e Scienze dell'Informazione, Via Dodecaneso, 35,16146 Genova, Italy (e-mail: davide@disi.unige.it, zucca@disi.unige.it);Dipartimento di Informatica e Scienze dell'Informazione, Via Dodecaneso, 35,16146 Genova, Italy (e-mail: davide@disi.unige.it, zucca@disi.unige.it)

  • Venue:
  • Journal of Functional Programming
  • Year:
  • 2002

Quantified Score

Hi-index 0.00

Visualization

Abstract

We present CMS, a simple and powerful calculus of modules supporting mutual recursion and higher order features, which can be instantiated over an arbitrary core calculus satisfying standard assumptions. The calculus allows expression of a large variety of existing mechanisms for combining software components, including parameterized modules similar to ML functors, extension with overriding as in object-oriented programming, mixin modules and extra-linguistic mechanisms like those provided by a linker. Hence CMS can be used as a paradigmatic calculus for modular languages, in the same spirit the lambda calculus is used for functional programming. We first present an untyped version of the calculus and then a type system; we prove confluence, progress, and subject reduction properties. Then, we define a derived calculus of mixin modules directly in terms of CMS and show how to encode other primitive calculi into CMS (the lambda calculus and the Abadi-Cardelli object calculus). Finally, we consider the problem of introducing a subtype relation for module types.