Skip to main content
    • Aa
    • Aa

A calculus of open modules: call-by-need strategy and confluence


We present a simple module calculus where selection and execution of a component is possible on open modules, that is, modules that still need to import some external definitions. Hence, it provides a kernel model for a computational paradigm in which standard execution (that is, execution of a single computation described by a fragment of code) can be interleaved with operations at the meta-level, which can manipulate in various ways the context in which this computation takes place. Formally, this is achieved by introducing configurations as basic terms. These are, roughly speaking, pairs consisting of an (open, mutually recursive) collection of named components and a term representing a program running in the context of these components. Configurations can be manipulated by classical module/fragment operators, hence reduction steps can be either execution steps of the program or steps that perform module operations (called reconfiguration steps).

Since configurations combine the features of lambda abstractions (first-class functions), records, environments with mutually recursive definitions and modules, the calculus extends and integrates both traditional module calculi and recursive lambda calculi. We state confluence of the calculus, and propose different ways to prevent errors arising from the lack of some required component, either by a purely static type system or by a combination of static and run-time checks. Moreover, we define a call-by-need strategy that performs module simplification only when needed and only once, leading to a generalisation of call-by-need lambda calculi that includes module features. We prove the soundness and completeness of this strategy using an approach based on information content, which also allows us to preserve confluence, even when local substitution rules are added to the calculus.

Linked references
Hide All

This list contains references from the content that can be linked to their source. For a full set of references and notes please see the PDF or HTML where available.

M. Abadi and L. Cardelli (1996) A Theory of Objects, Monographs in Computer Science, Springer.

M. Abadi , G. Gonthier and B. Werner (2004) Choice in dynamic linking. In: FOSSACS'04 – Foundations of Software Science and Computation Structures 2004. Springer-Verlag Lecture Notes in Computer Science 2987 1226.

D. Ancona , S. Fagorzi and E. Zucca (2005a) A calculus for dynamic reconfiguration with low priority linking. In: WOOD'04 – Workshop on Object-Oriented Development. Electronic Notes in Theoretical Computer Science 138 (2) 335.

D. Ancona and E. Zucca (1998) A theory of mixin modules: Basic and derived operators. Mathematical Structures in Computer Science 8 (4) 401446.

Z. M. Ariola and S. Blom (2002) Skew confluence and the lambda calculus with letrec. Annals of Pure and Applied Logic 117 (1-3) 95168.

Z. M. Ariola and M. Felleisen (1997) The call-by-need lambda calculus. Journal of Functional Programming 7 (3) 265301.

Z. M. Ariola and J. W. Klop (1997) Lambda calculus with explicit recursion. Information and Computation 139 (2) 154233.

L. Bettini , B. Venneri and V. Bono (2005) MOMI: a calculus for mobile mixins. Acta Informatica 42 (2-3) 143190.

A. Buckley , M. Murray , S. Eisenbach and S. Drossopoulou (2005) Flexible bytecode for linking in .NET. Electronic Notes in Theoretical Computer Science 141 (1) 7592.

S. Fagorzi and E. Zucca (2004) A case-study in encoding configuration languages: Multiple class loaders. Journal of Object Technology 3 (11) 3153.

M. W. Hicks and S. Nettles (2005) Dynamic software updating. ACM Transactions on Programming Languages and Systems 27 (6) 10491096.

E. Machkasova and F. Turbak (2000) A calculus for link-time compilation. In: ESOP 2000 – European Symposium on Programming 2000. Springer-Verlag Lecture Notes in Computer Science 1782 260274.

L. Moreau (1998) A syntactic theory of dynamic binding. Higher-Order and Symbolic Computation 11 (3) 233279.

J. B. Wells and R. Vestergaard (2000) Confluent equational reasoning for linking with first-class primitive modules. In: ESOP 2000 – European Symposium on Programming 2000. Springer-Verlag Lecture Notes in Computer Science 1782 412428.

Recommend this journal

Email your librarian or administrator to recommend adding this journal to your organisation's collection.

Mathematical Structures in Computer Science
  • ISSN: 0960-1295
  • EISSN: 1469-8072
  • URL: /core/journals/mathematical-structures-in-computer-science
Please enter your name
Please enter a valid email address
Who would you like to send this to? *


Full text views

Total number of HTML views: 0
Total number of PDF views: 2 *
Loading metrics...

Abstract views

Total abstract views: 28 *
Loading metrics...

* Views captured on Cambridge Core between September 2016 - 30th May 2017. This data will be updated every 24 hours.