#### Filter Results:

#### Publication Year

2000

2013

#### Publication Type

#### Co-author

#### Publication Venue

#### Key Phrases

Learn More

The evaluation function of a reduction semantics (i.e., a small-step operational semantics with an explicit representation of the reduction context) is canonically defined as the transitive closure of (1) decomposing a term into a reduction context and a redex, (2) contracting this redex, and (3) plugging the contractum in the context. Directly implementing… (More)

We present a new transformation of call-by-value lambda-terms into continuation-passing style (CPS). This transformation operates in one pass and is both compositional and first-order. Because it operates in one pass, it directly yields compact CPS programs that are comparable to what one would write by hand. Because it is compositional, it allows proofs by… (More)

The evaluation function of a syntactic theory is canonically defined as the transitive closure of (1) decomposing a program into an evaluation context and a redex, (2) contracting this redex, and (3) plugging the result in the context. Directly implementing this evaluation function therefore yields an interpreter with a quadratic time factor over its input.… (More)

Reynolds's defunctionalization technique is a whole-program transformation from higher-order to first-order functional programs. We study practical applications of this transformation and uncover new connections between seemingly unrelated higher-order and first-order specifications and between their correctness proofs. Defunctionalization therefore… (More)

- Lasse R. Nielsen
- 2000

Defunctionalization was introduced by John Reynolds in his 1972 article Definitional Interpreters for Higher-Order Programming Languages. Defunctionalization transforms a higher-order program into a first-order one, representing functional values as data structures. Since then it has been used quite widely, but we observe that it has never been proven… (More)

The extra compaction of the most compacting CPS transformation in existence , which is due to Sabry and Felleisen, is generally attributed to (1) making continuations occur first in CPS terms and (2) classifying more redexes as administrative. We show that this extra compaction is actually independent of the relative positions of values and continuations… (More)

The CPS transformation makes all functions continuation-passing, uniformly. Not all functions, however, need continuations: they only do if their evaluation includes computational effects. In this paper we focus on control operations, in particular " call with current continuation " and " throw ". We characterize this involvement as a control effect and we… (More)

A lambda-encoding such as the CPS transformation gives rise to administrative redexes. In his seminal article " Call-by-name, call-by-value and the lambda-calculus " , 25 years ago, Plotkin tackled administrative reductions using a so-called colon translation. In " Representing control, a study of the CPS transformation " , 15 years later, Danvy and… (More)

We bridge two distinct approaches to one-pass CPS transformations, i.e., CPS transformations that reduce administrative redexes at transformation time instead of in a post-processing phase. One approach is compositional and higher-order, and is independently due to Appel, Danvy and Filinski, and Wand, building on Plotkin's seminal work. The other is… (More)

We present a new transformation of-terms into continuation-passing style (CPS). This transformation operates in one pass and is both compositional and ÿrst-order. Previous CPS transformations only enjoyed two out of the three properties of being ÿrst-order, one-pass, and compositional, but the new transformation enjoys all three properties. It is proved… (More)