Results 1 - 10
of
19
Dynamic Rebinding for Marshalling and Update, with Destruct-Time λ
- IN PROC. ICFP
, 2003
"... Most programming languages adopt static binding, but for distributed programming an exclusive reliance on static binding is too restrictive: dynamic binding is required in various guises, for example when a marshalled value is received from the network, containing identifiers that must be rebound to ..."
Abstract
-
Cited by 32 (14 self)
- Add to MetaCart
Most programming languages adopt static binding, but for distributed programming an exclusive reliance on static binding is too restrictive: dynamic binding is required in various guises, for example when a marshalled value is received from the network, containing identifiers that must be rebound to local resources. Typically it is provided only by ad-hoc mechanisms that lack clean semantics. In this
A Linear Spine Calculus
- Journal of Logic and Computation
, 2003
"... We present the spine calculus S #-# as an efficient representation for the linear #-calculus # #-# which includes unrestricted functions (#), linear functions (-#), additive pairing (&), and additive unit (#). S #-# enhances the representation of Church's simply typed #-calculus by enforcing ..."
Abstract
-
Cited by 27 (5 self)
- Add to MetaCart
We present the spine calculus S #-#&# as an efficient representation for the linear #-calculus # #-#&# which includes unrestricted functions (#), linear functions (-#), additive pairing (&), and additive unit (#). S #-#&# enhances the representation of Church's simply typed #-calculus by enforcing extensionality and by incorporating linear constructs. This approach permits procedures such as unification to retain the efficient head access that characterizes first-order term languages without the overhead of performing #-conversions at run time. Applications lie in proof search, logic programming, and logical frameworks based on linear type theories. It is also related to foundational work on term assignment calculi for presentations of the sequent calculus. We define the spine calculus, give translations of # #-#&# into S #-#&# and vice-versa, prove their soundness and completeness with respect to typing and reductions, and show that the typable fragment of the spine calculus is strongly normalizing and admits unique canonical, i.e. ##-normal, forms.
Nominal rewriting
- Information and Computation
"... Nominal rewriting is based on the observation that if we add support for alphaequivalence to first-order syntax using the nominal-set approach, then systems with binding, including higher-order reduction schemes such as lambda-calculus betareduction, can be smoothly represented. Nominal rewriting ma ..."
Abstract
-
Cited by 15 (6 self)
- Add to MetaCart
Nominal rewriting is based on the observation that if we add support for alphaequivalence to first-order syntax using the nominal-set approach, then systems with binding, including higher-order reduction schemes such as lambda-calculus betareduction, can be smoothly represented. Nominal rewriting maintains a strict distinction between variables of the objectlanguage (atoms) and of the meta-language (variables or unknowns). Atoms may be bound by a special abstraction operation, but variables cannot be bound, giving the framework a pronounced first-order character, since substitution of terms for variables is not capture-avoiding. We show how good properties of first-order rewriting survive the extension, by giving an efficient rewriting algorithm, a critical pair lemma, and a confluence theorem
A Calculus for Modeling Software Components
, 2002
"... Many competing definitions of software components have been proposed over the years, but still today there is only partial agreement over such basic issues as granularity (are components bigger or smaller than objects, packages, or application?), instantiation (do components exist at run-time or ..."
Abstract
-
Cited by 13 (2 self)
- Add to MetaCart
Many competing definitions of software components have been proposed over the years, but still today there is only partial agreement over such basic issues as granularity (are components bigger or smaller than objects, packages, or application?), instantiation (do components exist at run-time or only at compile-time?), and state (should we distinguish between components and "instances" of components?).
Choices in representation and reduction strategies for lambda terms in intensional contexts
- J. Autom. Reasoning
, 2004
"... ..."
A Calculus of Evolving Objects ⋆
"... Abstract. The demands of developing modern, highly dynamic applications have led to an increasing interest in dynamic programming languages and mechanisms. Not only applications must evolve over time, but the object models themselves may need to be adapted to the requirements of different run-time c ..."
Abstract
-
Cited by 7 (5 self)
- Add to MetaCart
Abstract. The demands of developing modern, highly dynamic applications have led to an increasing interest in dynamic programming languages and mechanisms. Not only applications must evolve over time, but the object models themselves may need to be adapted to the requirements of different run-time contexts. Class-based models and prototypebased models, for example, may need to co-exist to meet the demands of dynamically evolving applications. Multi-dimensional dispatch, finegrained and dynamic software composition, and run-time evolution of behaviour are further examples of diverse mechanisms which may need to co-exist in a dynamically evolving run-time environment. How can we model the semantics of these highly dynamic features, yet still offer some reasonable safety guarantees? To this end we present an original calculus in which objects can adapt their behaviour at run-time. Both objects and environments are represented by first-class mappings between variables and values. Message sends are dynamically resolved to method calls. Variables may be dynamically bound, making it possible to model a variety of dynamic mechanisms within the same calculus. Despite the highly dynamic nature of the calculus, safety properties are assured by a type assignment system. 1
A calculus for reasoning about software composition
- Theoretical Computer Science
, 2005
"... www.iam.unibe.ch/∼scg Although the term software component has become commonplace, there is no universally accepted definition of the term, nor does there exist a common foundation for specifying various kinds of components and their compositions. We propose such a foundation. The Piccola calculus i ..."
Abstract
-
Cited by 5 (1 self)
- Add to MetaCart
www.iam.unibe.ch/∼scg Although the term software component has become commonplace, there is no universally accepted definition of the term, nor does there exist a common foundation for specifying various kinds of components and their compositions. We propose such a foundation. The Piccola calculus is a process calculus, based on the asynchronous π-calculus, extended with explicit namespaces. The calculus is high-level, rather than minimal, and is consequently convenient for expressing and reasoning about software components, and different styles of composition. We motivate and present the calculus, and outline how it is used to specify the semantics of Piccola, a small composition language. We demonstrate how the calculus can be used to simplify compositions by partial evaluation, and we briefly outline some other applications of the calculus to reasoning about compositional styles.
A.: Lazy evaluation and delimited control
- In: POPL ’09: Proceedings of the 36th Annual ACM SIGPLAN-SIGACT Symposium on Principles of Programming Languages
, 2009
"... The call-by-need lambda calculus provides an equational framework for reasoning syntactically about lazy evaluation. This paper examines its operational characteristics. By a series of reasoning steps, we systematically unpack the standard-order reduction relation of the calculus and discover a nove ..."
Abstract
-
Cited by 5 (0 self)
- Add to MetaCart
The call-by-need lambda calculus provides an equational framework for reasoning syntactically about lazy evaluation. This paper examines its operational characteristics. By a series of reasoning steps, we systematically unpack the standard-order reduction relation of the calculus and discover a novel abstract machine definition which, like the calculus, goes “under lambdas. ” We prove that machine evaluation is equivalent to standard-order evaluation. Unlike traditional abstract machines, delimited control plays a significant role in the machine’s behavior. In particular, the machine replaces the manipulation of a heap using store-based effects with disciplined management of the evaluation stack using control-based effects. In short, state is replaced with control. To further articulate this observation, we present a simulation of call-by-need in a call-by-value language using delimited control operations.

