A calculus of module systems

A calculus of module systems
复制标题

模块系统的演算

DOI:
10.1017/s0956796801004257
复制
发表时间:
2002
期刊:
J. Funct. Program.
影响因子:
--
通讯作者:
Elena Zucca
Elena Zucca
中科院分区:
--
文献类型:
--
作者:
D. Ancona;Elena Zucca

文献摘要

被引文献

相似文献

我们提出CMS,这是一个支持相互递归和高阶特征的模块的简单而强大的演算,可以通过满足标准假设的任意核心计算进行实例化。演算允许表达各种现有机制,用于组合软件组件,包括类似于ML函子的参数化模块,与对象导向的编程中的覆盖,Mixin模块和语言外部机制,例如连接器提供的延伸。因此,CM可以用作模块化语言的范式演算,本着lambda conculus用于功能编程的精神。我们首先提出了微积分的未型版本,然后提出一个类型系统。我们证明汇合,进度和受试者还原性能。然后,我们直接根据CMS定义了混合蛋白模块的衍生计算,并展示了如何将其他原始骨化器编码到CMS(lambda conculus和abadi-cardelli对象计算)中。最后,我们考虑了引入模块类型的亚型关系的问题。
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.