A unified system of parameterization for programming languages
LFP '88 Proceedings of the 1988 ACM conference on LISP and functional programming
Inheritance in smalltalk-80: a denotational definition
POPL '88 Proceedings of the 15th ACM SIGPLAN-SIGACT symposium on Principles of programming languages
A denotational semantics of inheritance and its correctness
OOPSLA '89 Conference proceedings on Object-oriented programming systems, languages and applications
The definition of Standard ML
A syntactic theory of transparent parameterization
Proceedings of the third European symposium on programming on ESOP '90
A theory of binding structures and applications to rewriting
Theoretical Computer Science
Quasi-static scoping: sharing variable bindings across multiple lexical scopes
POPL '93 Proceedings of the 20th ACM SIGPLAN-SIGACT symposium on Principles of programming languages
Theoretical aspects of object-oriented programming: types, semantics, and language design
Theoretical aspects of object-oriented programming: types, semantics, and language design
Type inference for objects with instance variables and inheritance
Theoretical aspects of object-oriented programming
Theoretical aspects of object-oriented programming
Label-selective &lgr;-calculus syntax and confluence
Selected papers of the thirteenth conference on Foundations of software technology and theoretical computer science
Denotational Semantics: The Scott-Strachey Approach to Programming Language Theory
Denotational Semantics: The Scott-Strachey Approach to Programming Language Theory
The Implementation of Functional Programming Languages (Prentice-Hall International Series in Computer Science)
Modular object-oriented programming with units and mixins
ICFP '98 Proceedings of the third ACM SIGPLAN international conference on Functional programming
Theoretical Computer Science
A Calculus of Lambda Calculus Contexts
Journal of Automated Reasoning
Higher-Order and Symbolic Computation
UPSILON: universal programming system with incomplete lazy object notation
Fundamenta Informaticae
A Simply Typed Context Calculus with First-Class Environments
FLOPS '01 Proceedings of the 5th International Symposium on Functional and Logic Programming
ACM Transactions on Computational Logic (TOCL)
Electronic Notes in Theoretical Computer Science (ENTCS)
The lambda-context calculus (extended version)
Information and Computation
Proof contexts with late binding
TLCA'05 Proceedings of the 7th international conference on Typed Lambda Calculi and Applications
UPSILON: Universal Programming System with Incomplete Lazy Object Notation
Fundamenta Informaticae
Hi-index | 0.00 |
A context in the λ-calculus is a term with some holes. Hole filling differs from β-substitution in that name capture is intended. This seemingly simple feature transcends static scope and lies at the heart of modular and object-oriented programming. Still, the name capture feature of hole filling is at odds with hygienic β-substitution. In this paper we conservatively extend the λ-calculus to incorporate the notion of contexts without jeopardizing the β-rule. We perceive contexts as source code and λ-terms as target code. Context filling is encoded as compilation operations and the enriched calculus is a theory of separate compilation and incremental program construction. Linking of separately-developed programs is done by coherent renaming of free variables.We apply our context-enriching schema to the λ-calculus extended with definitions and devise a calculus of first-class modules. We show that module linking can be modeled solely by the renaming of import and export variables. We add relinkable variable references to model virtual method references essential to object systems.The inclusion of contexts introduces parameters whose linking is based on names (symbols, identifiers, or keywords). We simulate in the context-enriched calculus other extensions of the λ-calculus with name-based programming notions such as Dami's λ-calculus with names, Aït-Kaci and Garrigue's label-selective λ-calculus, Lamping's transparent data parameters, and our quasi-static procedures.