Hostname: page-component-78c5997874-v9fdk Total loading time: 0 Render date: 2024-11-13T00:41:10.835Z Has data issue: false hasContentIssue false

A calculus of module systems

Published online by Cambridge University Press:  22 March 2002

DAVIDE ANCONA
Affiliation:
Dipartimento di Informatica e Scienze dell'Informazione, Via Dodecaneso, 35,16146 Genova, Italy (e-mail: davide@disi.unige.it, zucca@disi.unige.it)
ELENA ZUCCA
Affiliation:
Dipartimento di Informatica e Scienze dell'Informazione, Via Dodecaneso, 35,16146 Genova, Italy (e-mail: davide@disi.unige.it, zucca@disi.unige.it)
Rights & Permissions [Opens in a new window]

Abstract

Core share and HTML view are not available for this content. However, as you have access to this content, a full PDF is available via the ‘Save PDF’ action button.

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.

Type
Research Article
Copyright
© 2002 Cambridge University Press
Submit a response

Discussions

No Discussions have been published for this article.