Results 1 -
6 of
6
Using a Continuation Twice and Its Implications for the Expressive Power of Call/cc
, 1998
"... . We study the implications for the expressive power of call/cc of upward continuations, specifically the idiom of using a continuation twice. Although such control effects were known to Landin and Reynolds when they invented J and escape, the forebears of call/cc, they still act as a conceptual pit ..."
Abstract
-
Cited by 11 (3 self)
- Add to MetaCart
. We study the implications for the expressive power of call/cc of upward continuations, specifically the idiom of using a continuation twice. Although such control effects were known to Landin and Reynolds when they invented J and escape, the forebears of call/cc, they still act as a conceptual pitfall for some attempts to reason about continuations. We use this idiom to refute some recent conjectures about equivalences in a language with continuations, but no other effects. This shows that first-class continuations as given by call/cc have greater expressive power than one would expect from goto or exits. Keywords: call/cc, continuations, upward continuations, expressiveness, program equivalence. 1. Introduction You can enter a room once, and yet leave it twice. (Peter Landin) A common informal explanation of continuations is the comparison with forward goto. This is in some sense a very apt simile: forward gotos obviously do not give rise to loops, and continuations, without some ...
The Structure of Call-by-Value
, 2000
"... To my parents Understanding procedure calls is crucial in computer science and everyday pro-gramming. Among the most common strategies for passing procedure argu-ments (‘evaluation strategies’) are ‘call-by-name’, ‘call-by-need’, and ‘call-by-value’, where the latter is the most commonly used. While ..."
Abstract
-
Cited by 11 (3 self)
- Add to MetaCart
To my parents Understanding procedure calls is crucial in computer science and everyday pro-gramming. Among the most common strategies for passing procedure argu-ments (‘evaluation strategies’) are ‘call-by-name’, ‘call-by-need’, and ‘call-by-value’, where the latter is the most commonly used. While reasoning about procedure calls is simple for call-by-name, problems arise for call-by-need and call-by-value, because it matters how often and in which order the arguments of a procedure are evaluated. We shall classify these problems and see that all of them occur for call-by-value, some occur for call-by-need, and none occur for call-by-name. In that sense, call-by-value is the ‘greatest common denominator ’ of the three evaluation strategies. Reasoning about call-by-value programs has been tackled by Eugenio Moggi’s ‘computational lambda-calculus’, which is based on a distinction between ‘values’
Environments, Continuation Semantics and Indexed Categories
- Theoretical Aspects of Computer Software, number 1281 in Lect. Notes Comp. Sci
, 1997
"... . There have traditionally been two approaches to modelling environments, one by use of ønite products in Cartesian closed categories, the other by use of the base categories of indexed categories with structure. Recently, there have been more general deønitions along both of these lines: the ørst g ..."
Abstract
-
Cited by 5 (1 self)
- Add to MetaCart
. There have traditionally been two approaches to modelling environments, one by use of ønite products in Cartesian closed categories, the other by use of the base categories of indexed categories with structure. Recently, there have been more general deønitions along both of these lines: the ørst generalising from Cartesian to symmetric premonoidal categories, the second generalising from indexed categories with speciøed structure to -categories. The added generality is not of the purely mathematical kind; in fact it is necessary to extend semantics from the logical calculi studied in, say, Type Theory to more realistic programming language fragments. In this paper, we establish an equivalence between these two recent notions. We then use that equivalence to study semantics for continuations. We give three category theoretic semantics for modelling continuations and show the relationships between them. The ørst is given by a continuations monad. The second is based on a symmetric prem...
Axiomatics for Data Refinement in Call By Value Programming Languages
"... We give a systematic category theoretic axiomatics for modelling data refinement in call by value programming languages. Our leading examples of call by value languages are extensions of the computational -calculus, such as FPC and languages for modelling nondeterminism, and extensions of the first ..."
Abstract
-
Cited by 2 (0 self)
- Add to MetaCart
We give a systematic category theoretic axiomatics for modelling data refinement in call by value programming languages. Our leading examples of call by value languages are extensions of the computational -calculus, such as FPC and languages for modelling nondeterminism, and extensions of the first order fragment of the computational -calculus, such as a CPS language. We give a category theoretic account of the basic setting, then show how to model contexts, then arbitrary type and term constructors, then signatures, and finally data refinement. This extends and clarifies Kinoshita and Power's work on lax logical relations for call by value languages.
Call-by-push-value
, 2001
"... Call-by-push-value (CBPV) is a new programming language paradigm, based on the slogan “a value is, a computation does”. We claim that CBPV provides the semantic primitives from which the call-by-value and call-by-name paradigms are built. The primary goal of the thesis is to present the evidence for ..."
Abstract
-
Cited by 2 (0 self)
- Add to MetaCart
Call-by-push-value (CBPV) is a new programming language paradigm, based on the slogan “a value is, a computation does”. We claim that CBPV provides the semantic primitives from which the call-by-value and call-by-name paradigms are built. The primary goal of the thesis is to present the evidence for this claim, which is found in a remarkably wide range of semantics: from operational semantics, in big-step form and in machine form, to denotational models using domains, possible worlds, continuations and games. In the first part of the thesis, we come to CBPV and its equational theory by looking critically at the call-by-value and call-by-name paradigms in the presence of general computational effects. We give a Felleisen/Friedman-style CK-machine semantics, which explains how CBPV can be understood in terms of push/pop instructions. In the second part we give simple CBPV models for printing, divergence, global store, errors, erratic choice and control effects, as well as for various combinations of these effects. We develop the store model into a possible world model for cell generation, and (following Steele) we develop the control model into a “jumping implementation ” using a continuation language called Jump-With-Argument (JWA). We present a pointer game model for CBPV, in the style of Hyland and Ong. We see that the game concepts of questioning and answering correspond to the CBPV concepts of forcing and producing respectively. We observe that this game semantics is closely related to the jumping implementation. In the third part of the thesis, we study the categorical semantics for the CBPV equational theory. We present and compare 3 approaches: ¯ models using strong monads, in the style of Moggi; ¯ models using value/producer structures, in the style of Power and Robinson; ¯ models using (strong) adjunctions. All the concrete models in the thesis are seen to be adjunction models. Submitted for the degree of Doctor of Philosophy
Categorical and Graphical Models of Programming Languages
, 2001
"... provide a formal but intuitive way of presenting and reasoning about programs, which is widely used in practice, although in an informal or semi-formal fashion. In this thesis, we investigate categorical models of programming languages based on a graphical presentation. In the first part, we use a ..."
Abstract
-
Cited by 1 (0 self)
- Add to MetaCart
provide a formal but intuitive way of presenting and reasoning about programs, which is widely used in practice, although in an informal or semi-formal fashion. In this thesis, we investigate categorical models of programming languages based on a graphical presentation. In the first part, we use a graphical presentation of processes to motivate a categorical model of processes which provides process types and constructors similar to those available in categories of graphs. The model is parametrised on a base category of processes, and may therefore be used to model a variety of process calculi or languages. We present a concrete instance of this model, based on the process calculus CCS, and show that it arises as a syntactic category of an extension of the base calculus. In the second part of the thesis, we use a graphical semantics due to Jeffrey to model and prove correct a step in the compilation of higher-order functional programming languages: closure conversion -- a program tra

