Results 1 - 10
of
31
A Generalization of Exceptions and Control in ML-like Languages
- IN PROC. FPCA
, 1995
"... We add functional continuations and prompts to a language with an ML-style type system. The operators significantly extend and simplify the control operators in SML/NJ, and can be themselves used to implement (simple) exceptions. We prove that well-typed terms never produce run-time type errors and ..."
Abstract
-
Cited by 54 (0 self)
- Add to MetaCart
We add functional continuations and prompts to a language with an ML-style type system. The operators significantly extend and simplify the control operators in SML/NJ, and can be themselves used to implement (simple) exceptions. We prove that well-typed terms never produce run-time type errors and give a module for implementing them in the latest version of SML/NJ.
Reasoning with Continuations II: Full Abstraction for Models of Control
- In Proceedings of the 1990 ACM Conference on Lisp and Functional Programming
, 1990
"... A fully abstract model of a programming language assigns the same meaning to two terms if and only if they have the same operational behavior. Such models are well-known for functional languages but little is known about extended functional languages with sophisticated control structures. We show th ..."
Abstract
-
Cited by 29 (4 self)
- Add to MetaCart
A fully abstract model of a programming language assigns the same meaning to two terms if and only if they have the same operational behavior. Such models are well-known for functional languages but little is known about extended functional languages with sophisticated control structures. We show that a direct model with error values and the conventional continuation model are adequate for functional languages augmented with first- and higher-order control facilities, respectively. Furthermore, both models become fully abstract on adding a control delimiter and a parallel conditional to the programming languages.
A Syntactic Theory of Dynamic Binding
- Higher-Order and Symbolic Computation
, 1997
"... . Dynamic binding, which has always been associated with Lisp, is still semantically obscure to many. Although largely replaced by lexical scoping, not only does dynamic binding remain an interesting and expressive programming technique in specialised circumstances, but also it is a key notion in se ..."
Abstract
-
Cited by 26 (1 self)
- Add to MetaCart
. Dynamic binding, which has always been associated with Lisp, is still semantically obscure to many. Although largely replaced by lexical scoping, not only does dynamic binding remain an interesting and expressive programming technique in specialised circumstances, but also it is a key notion in semantics. This paper presents a syntactic theory that enables the programmer to perform equational reasoning on programs using dynamic binding. The theory is proved to be sound and complete with respect to derivations allowed on programs in "dynamic-environment passing style". From this theory, we derive a sequential evaluation function in a context-rewriting system. Then, we exhibit the power and usefulness of dynamic binding in two different ways. First, we prove that dynamic binding adds expressiveness to a purely functional language. Second, we show that dynamic binding is an essential notion in semantics that can be used to define the semantics of exceptions. Afterwards, we further refin...
A Customizable Substrate for Concurrent Languages
- In ACM SIGPLAN '91 Conference on Programming Language Design and Implementation
, 1992
"... We describe an approach to implementing a wide-range of concurrency paradigms in high-level (symbolic) programming languages. The focus of our discussion is sting, a dialect of Scheme, that supports lightweight threads of control and virtual processors as first-class objects. Given the significant ..."
Abstract
-
Cited by 25 (7 self)
- Add to MetaCart
We describe an approach to implementing a wide-range of concurrency paradigms in high-level (symbolic) programming languages. The focus of our discussion is sting, a dialect of Scheme, that supports lightweight threads of control and virtual processors as first-class objects. Given the significant degree to which the behavior of these objects may be customized, we can easily express a variety of concurrency paradigms and linguistic structures within a common framework without loss of efficiency. Unlike parallel systems that rely on operating system services for managing concurrency, sting implements concurrency management entirely in terms of Scheme objects and procedures. It, therefore, permits users to optimize the runtime behavior of their applications without requiring knowledge of the underlying runtime system. This paper concentrates on (a) the implications of the design for building asynchronous concurrency structures, (b) organizing large-scale concurrent computations, and (c)...
Design of a Concurrent and Distributed Language
, 1992
"... . This paper presents a new dialect of Scheme aimed towards concurrency and distribution. It offers a few primitives, including first-class continuations, with very simple semantics. Numerous examples are given showing how to program the classical concurrent control operators such as future, pcall a ..."
Abstract
-
Cited by 21 (13 self)
- Add to MetaCart
. This paper presents a new dialect of Scheme aimed towards concurrency and distribution. It offers a few primitives, including first-class continuations, with very simple semantics. Numerous examples are given showing how to program the classical concurrent control operators such as future, pcall and either. The implementation is sketched and presented along the lines of a metacircular interpreter. This paper presents the idiom of Icsla 1 , a language belonging to the Lisp family and more precisely a descendant of Scheme. This dialect has been designed with respect to the following main objectives: -- It should have a very simple and understandable semantics, with few but powerful and unrestrictively combinable concepts; -- It should offer concurrency, distribution and some other modern features such as sophisticated control features while not sacrificing the variety of styles traditionally offered by Lisp. These goals are rather general and deserve further comment. Following Sche...
Translating Core Facile
, 1995
"... In first approximation Core Facile is a simply typed -calculus enriched with parallel composition, dynamic channel generation, and input-output synchronous communication primitives. In this paper we explore the (dynamic) semantics of core Facile programs. This should be taken as a basis for the def ..."
Abstract
-
Cited by 20 (2 self)
- Add to MetaCart
In first approximation Core Facile is a simply typed -calculus enriched with parallel composition, dynamic channel generation, and input-output synchronous communication primitives. In this paper we explore the (dynamic) semantics of core Facile programs. This should be taken as a basis for the definition of abstract machines, the transformation of programs, and the development of modal specification languages. We claim two main contributions. We introduce a new semantics based on the notion of barbed bisimulation. We argue that the derived equivalence provides a more satisfying treatment of restriction, in particular by proving the adequacy of a natural translation of Facile into ß-calculus we suggest that our approach is in good harmony with previous research on the semantics of sub-calculi of Core Facile such as Chocs and ß-calculus. We illustrate at an abstract level various aspects of Facile compilation. In particular we introduce an `asynchronous' version of the Facile language...
Partial Continuations as the Difference of Continuations, A Duumvirate of Control Operators
- International Conference on Programming Language Implementation and Logic Programming (PLILP'94). Proceedings
, 1994
"... We define a partial continuation as the difference of two continuations. We exhibit, in a single framework, several design choices and their impact on semantics. The ability of partial continuations to manipulate stack frames blurs the nature of dynamic extent; therefore, we introduce a new concep ..."
Abstract
-
Cited by 19 (2 self)
- Add to MetaCart
We define a partial continuation as the difference of two continuations. We exhibit, in a single framework, several design choices and their impact on semantics. The ability of partial continuations to manipulate stack frames blurs the nature of dynamic extent; therefore, we introduce a new concept of prefixal extent that characterises the time during which a partial continuation can be reified. We propose two equivalent formal semantics for partial continuations: a context-rewriting system and a cps translation. Two new and realistic examples illustrate both the interest of partial continuations and the expressiveness of our choices.
Handling Control
- In Proceedings of the ACM SIGPLAN Conference on Programming Language Design and Implementation
, 1993
"... Non-local control transfer and exception handling have a long tradition in higher-order programming languages such as Common Lisp, Scheme and ML. However, each language stops short of providing a full and complementary approach --- control handling is provided only if the corresponding control oper ..."
Abstract
-
Cited by 17 (0 self)
- Add to MetaCart
Non-local control transfer and exception handling have a long tradition in higher-order programming languages such as Common Lisp, Scheme and ML. However, each language stops short of providing a full and complementary approach --- control handling is provided only if the corresponding control operator is first-order. In this work, we describe handlers in a higher-order control setting. We invoke our earlier theoretical result that all denotational models of control languages invariably include capabilities that handle control. These capabilities, when incorporated into the language, form an elegant and powerful higher-order generalization of the first-order exception-handling mechanism. 1 Introduction Control manipulation in applicative programming languages comes in two flavors. First-order control operators allow computations to abort to a dynamically enclosing control context, e.g., Common Lisp's [23, 24] throw and ML's [9, 17] raise. They are invariably accompanied by forms th...
A Concurrent and Distributed Extension of Scheme
- PARLE '92 -- Parallel Architectures and Languages Europe
, 1992
"... The Lisp family of languages has traditionally been a privileged domain where linguistic experiments were done, this paper presents a new dialect offering concurrency and distribution. This dialect, nicknamed CD-Scheme, has been designed above Scheme with as few as possible features to allow a great ..."
Abstract
-
Cited by 15 (5 self)
- Add to MetaCart
The Lisp family of languages has traditionally been a privileged domain where linguistic experiments were done, this paper presents a new dialect offering concurrency and distribution. This dialect, nicknamed CD-Scheme, has been designed above Scheme with as few as possible features to allow a great expressiveness but still to retain the original consistency and simplicity of Scheme. We explicitly show how common parallel constructs can be written in regular CD-Scheme. A denotational semantics is also presented that expresses the detailed meaning of assignment, data mutation, continuations in presence of concurrency and distribution. This semantics offers a basis to understand new proposals of concurrent or distributed features and may be used to justify compiler optimizations or implementation techniques. The proposed set of features of CD-Scheme can be also used to extend languages other than Scheme. CD-Scheme is a concurrent, distributed and conservative extension of Scheme, a dial...

