Title
A calculus of open modules: call-by-need strategy and confluence
Abstract
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.
Year
DOI
Venue
2007
10.1017/S0960129507006238
Mathematical Structures in Computer Science
Keywords
Field
DocType
simple module calculus,classical module,traditional module calculus,call-by-need lambda calculus,recursive lambda calculus,call-by-need strategy,module simplification,execution step,open module,module operation,module feature,simple module,type system,information content
Programming language,Computer science,Theoretical computer science,Operator (computer programming),Soundness,Recursion,Control reconfiguration,Computation,Kernel (linear algebra),Discrete mathematics,Simple module,Completeness (statistics),Calculus
Journal
Volume
Issue
ISSN
17
4
0960-1295
Citations 
PageRank 
References 
2
0.38
35
Authors
2
Name
Order
Citations
PageRank
Sonia Fagorzi1656.23
Elena Zucca2497101.25