Results 1 
8 of
8
Polymorphic type assignment and CPS conversion
 LISP and Symbolic Computation
, 1993
"... Meyer and Wand established that the type of a term in the simply typedcalculus may be related in a straightforward manner to the type of its callbyvalue CPS transform. This typing property maybe extended to Schemelike continuationpassing primitives, from which the soundness of these extensions ..."
Abstract

Cited by 37 (10 self)
 Add to MetaCart
(Show Context)
Meyer and Wand established that the type of a term in the simply typedcalculus may be related in a straightforward manner to the type of its callbyvalue CPS transform. This typing property maybe extended to Schemelike continuationpassing primitives, from which the soundness of these extensions follows. We study the extension of these results to the DamasMilner polymorphic type assignment system under both the callbyvalue and callbyname interpretations. We obtain CPS transforms for the callbyvalue interpretation, provided that the polymorphic let is restricted to values, and for the callbyname interpretation with no restrictions. We prove that there is no callbyvalue CPS transform for the full DamasMilner language that validates the MeyerWand typing property and is equivalent to the standard callbyvalue transform up toconversion. 1
CPS Transformation after Strictness Analysis
 ACM Letters on Programming Languages and Systems
, 1993
"... syntax of the source language ` c : ' f:::; x : ø ; :::g ` x : ø ß ` e : ø !ø ß ` fix e : ø ß [ fx : ø 1 g ` e : ø 2 ß ` x : ø 1 : e : ø 1 !ø 2 ß ` e 0 : ø 1 !ø 2 ß ` e 1 : ø 1 ß ` @ e 0 e 1 : ø 2 ß ` e 1 : ' ß ` e 2 : ø ß ` e 3 : ø ß ` if e 1 then e 2 else e 3 : ø ß ` e 0 : ø 0 ß [ fx ..."
Abstract

Cited by 29 (11 self)
 Add to MetaCart
(Show Context)
syntax of the source language ` c : ' f:::; x : ø ; :::g ` x : ø ß ` e : ø !ø ß ` fix e : ø ß [ fx : ø 1 g ` e : ø 2 ß ` x : ø 1 : e : ø 1 !ø 2 ß ` e 0 : ø 1 !ø 2 ß ` e 1 : ø 1 ß ` @ e 0 e 1 : ø 2 ß ` e 1 : ' ß ` e 2 : ø ß ` e 3 : ø ß ` if e 1 then e 2 else e 3 : ø ß ` e 0 : ø 0 ß [ fx : ø 0 g ` e 1 : ø 1 ß ` let x = e 0 in e 1 : ø 1 ß ` e 1 : ø 1 ß ` e 2 : ø 2 ß ` pair e 1 e 2 : ø 1 \Theta ø 2 ß ` e : ø 1 \Theta ø 2 ß ` fst e : ø 1 ß ` e : ø 1 \Theta ø 2 ß ` snd e : ø 2 Fig. 2. Typechecking rules for the source language approach is used by Kesley and Hudak [11] and by Fradet and Le M'etayer [9]. Both include a CPS transformation. Fradet and Le M'etayer compile both CBN and CBV programs by using the CBN and the CBV CPStransformation. Recently, Burn and Le M'etayer have combined this technique with a global programanalysis [2], which is comparable to our goal here. 1.4 Overview Section 2 presents the syntax of the source language and the strictnessannotated language. We c...
Thunks and the λcalculus
 IN THE JOURNAL OF FUNCTIONAL PROGRAMMING. RS976 OLIVIER DANVY AND ULRIK
, 1997
"... Plotkin, in his seminal article Callbyname, callbyvalue and the λcalculus, formalized evaluation strategies and simulations using operational semantics and continuations. In particular, he showed how callbyname evaluation could be simulated under callbyvalue evaluation and vice versa. Si ..."
Abstract

Cited by 22 (9 self)
 Add to MetaCart
(Show Context)
Plotkin, in his seminal article Callbyname, callbyvalue and the λcalculus, formalized evaluation strategies and simulations using operational semantics and continuations. In particular, he showed how callbyname evaluation could be simulated under callbyvalue evaluation and vice versa. Since Algol 60, however, callbyname is both implemented and simulated with thunks rather than with continuations. We recast
Callbyneed and Continuationpassing Style
 Lisp and Symbolic Computation
, 1993
"... . This paper examines the transformation of callbyneed terms into continuation passing style (CPS). It begins by presenting a simple transformation of callbyneed terms into program graphs and a reducer for such graphs. From this, an informal derivation is carried out, resulting in a translat ..."
Abstract

Cited by 18 (0 self)
 Add to MetaCart
(Show Context)
. This paper examines the transformation of callbyneed terms into continuation passing style (CPS). It begins by presenting a simple transformation of callbyneed terms into program graphs and a reducer for such graphs. From this, an informal derivation is carried out, resulting in a translation from terms into selfreducing program graphs, where the graphs are represented as CPS terms involving storage operations. Though informal, the derivation proceeds in simple steps, and the resulting translation is taken to be our canonical CPS transformation for callbyneed terms. In order to define the CPS transformation more formally, two alternative presentations are given. The first takes the form of a continuation semantics for the callbyneed language. The second presentation follows Danvy and Hatcliff 's twostage decomposition of the callbyname CPS transformation, resulting in a similar twostage CPS transformation for callbyneed. Finally, a number of practical matters are...
Interpreting functions as πcalculus processes: a tutorial
, 1999
"... This paper is concerned with the relationship betweencalculus and ��calculus. Thecalculus talks about functions and their applicative behaviour. This contrasts with the ��calculus, that talks about processes and their interactive behaviour. Application is a special form of interaction, and there ..."
Abstract

Cited by 1 (0 self)
 Add to MetaCart
This paper is concerned with the relationship betweencalculus and ��calculus. Thecalculus talks about functions and their applicative behaviour. This contrasts with the ��calculus, that talks about processes and their interactive behaviour. Application is a special form of interaction, and therefore functions can be seen as a special form of processes. We study how the functions of thecalculus (the computable functions) can be represented as ��calculus processes. The ��calculus semantics of a language induces a notion of equality on the terms of that language. We therefore also analyse the equality among functions that is induced by their representation as ��calculus processes. This paper is intended as a tutorial. It however contains some original contributions. The main ones are: the use of wellknown Continuation Passing Style transforms to derive the encodings into ��calculus and prove their correctness; the encoding of typedcalculi.
ABSTRACT Specializing Continuations A Model for Dynamic Join Points
"... By modeling dynamic join points, pointcuts, and advice in a defunctionalized continuationpassing style interpreter, we provide a fundamental account of these AOP mechanisms. Dynamic join points develop in a principled and natural way as activations of continuation frames. Pointcuts arise directly i ..."
Abstract
 Add to MetaCart
(Show Context)
By modeling dynamic join points, pointcuts, and advice in a defunctionalized continuationpassing style interpreter, we provide a fundamental account of these AOP mechanisms. Dynamic join points develop in a principled and natural way as activations of continuation frames. Pointcuts arise directly in the semantic specification as predicates identifying continuation frames. Advice models procedures operating on continuations, specializing the behaviour of continuation frames. In this way, an essential form of AOP is seen, neither as metaprogramming nor as an ad hoc extension, but as an intrinsic feature of programming languages. 1.
\Lambda
"... In order to define the CPS transformation more formally, two alternative presentations are given. The first takes the form of a continuation semantics for the callbyneed language. The second presentation follows Danvy and Hatcliff 's twostage decomposition of the callbyname CPS transformat ..."
Abstract
 Add to MetaCart
(Show Context)
In order to define the CPS transformation more formally, two alternative presentations are given. The first takes the form of a continuation semantics for the callbyneed language. The second presentation follows Danvy and Hatcliff 's twostage decomposition of the callbyname CPS transformation, resulting in a similar twostage CPS transformation for callbyneed. Finally, a number of practical matters are considered, including an improvement to eliminate the socalled administrative redexes, as well as to avoid unnecessary memoization and take advantage of strictness information. These improvements make it feasible to consider potential applications in compilers for callbyneed programming languages. 1. Introduction One of the trends in compiler construction has been the use of * terms written in continuationpassing style (CPS) as an intermediate representation [1, 19, 25]. Transformations into CPS for callbyname and callbyvalue languages are well known [8, 23, 24], but we are unaware of a similar transformation for languages implemented with a callbyneed evaluation strategy (also known as &quot;lazy evaluation&quot;). We find it natural to consider such a transformation. After all, one of the motivations for the use of CPS
Polymorphic Type Assignment and CPS Conversion
"... Abstract. Meyer and Wand established that the type of a term in the simply typedcalculus may be related in a straightforward manner to the type of its callbyvalue CPS transform. This typing property may be extended to Schemelike continuationpassing primitives, from which the soundness of these ..."
Abstract
 Add to MetaCart
(Show Context)
Abstract. Meyer and Wand established that the type of a term in the simply typedcalculus may be related in a straightforward manner to the type of its callbyvalue CPS transform. This typing property may be extended to Schemelike continuationpassing primitives, from which the soundness of these extensions follows. We study the extension of these results to the DamasMilner polymorphic type assignment system under both the callbyvalue and callbyname interpretations. We obtain CPS transforms for the callbyvalue interpretation, provided that the polymorphic let is restricted to values, and for the callbyname interpretation with no restrictions. We prove thatthereis no callbyvalue CPS transform for the full DamasMilner language that validates the MeyerWand typing property and is equivalent to the standard callbyvalue transform up to operational equivalence. 1.