Results 1 
8 of
8
A functional correspondence between monadic evaluators and abstract machines for languages with computational effects
 Theoretical Computer Science
, 2005
"... Abstract. We extend our correspondence between evaluators and abstract machines from the pure setting of the λcalculus to the impure setting of the computational λcalculus. We show how to derive new abstract machines from monadic evaluators for the computational λcalculus. Starting from (1) a gen ..."
Abstract

Cited by 38 (20 self)
 Add to MetaCart
Abstract. We extend our correspondence between evaluators and abstract machines from the pure setting of the λcalculus to the impure setting of the computational λcalculus. We show how to derive new abstract machines from monadic evaluators for the computational λcalculus. Starting from (1) a generic evaluator parameterized by a monad and (2) a monad specifying a computational effect, we inline the components of the monad in the generic evaluator to obtain an evaluator written in a style that is specific to this computational effect. We then derive the corresponding abstract machine by closureconverting, CPStransforming, and defunctionalizing this specific evaluator. We illustrate the construction with the identity monad, obtaining yet again the CEK machine, and with a lifted state monad, obtaining a variant of the CEK machine with error and state. In addition, we characterize the tailrecursive stack inspection presented by Clements and Felleisen at ESOP 2003 as a lifted state monad. This enables us to combine the stackinspection monad with other monads and to construct abstract machines for languages with properly tailrecursive stack inspection and other computational effects. The construction scales to other monads—including one more properly dedicated to stack inspection than the lifted state monad—and other monadic evaluators. Keywords. Lambdacalculus, interpreters, abstract machines, closure conversion, transformation into continuationpassing style (CPS), defunctionalization, monads, effects, proper
Automatic Partial Inversion of Inductively Sequential Functions ⋆
"... Abstract. We introduce a new partial inversion technique for firstorder functional programs. Our technique is simple, fully automatic, and (when it succeeds) returns a program that belongs to the same class of the original program, namely the class of inductively sequential programs (i.e., typical ..."
Abstract

Cited by 2 (1 self)
 Add to MetaCart
Abstract. We introduce a new partial inversion technique for firstorder functional programs. Our technique is simple, fully automatic, and (when it succeeds) returns a program that belongs to the same class of the original program, namely the class of inductively sequential programs (i.e., typical functional programs). To ease the definition, our method proceeds in a stepwise manner: normalization (introduction of let expressions), proper inversion, and removal of let expressions. Furthermore, it can easily be implemented. Therefore, it forms an appropriate basis for developing a practically applicable transformation tool. Preliminary experiments with a prototype implementation of the partial inverter demonstrates the usefulness and viability of our approach. 1
Improved GraphBased Lambda Lifting
 In Proc. of the Int’l Conf. on Software Engineering Research and Practice (SERP’06
, 2006
"... Abstract — Lambda lifting is a technique for transforming a program with local function definitions into a program consisting only of global function definitions. The best known lambda lifting algorithm computes the minimal set of extraneous parameters needed by each function in O(n 3) steps by solv ..."
Abstract

Cited by 1 (0 self)
 Add to MetaCart
Abstract — Lambda lifting is a technique for transforming a program with local function definitions into a program consisting only of global function definitions. The best known lambda lifting algorithm computes the minimal set of extraneous parameters needed by each function in O(n 3) steps by solving a system of set equations which are recursive if the functions in the program are mutually recursive. Mutually recursive functions give rise to strongly connected components in the call graph of a program. Danvy and Schultz observed that all functions in a strongly connected component can be given the same set of free variables as extraneous parameters. Based on this observation, they developed an O(n 2) graphbased lambda lifting algorithm. This article illustrates how Danvy’s and Schultz’s algorithm is an approximation of Johnsson’s algorithm for a certain class of programs and describes an O(n 3) graphbased lambda lifting algorithm that yields the same results as Johnsson’s algorithm. I.
A Three Syntactic Theories for Combinatory Graph Reduction
"... We present a purely syntactic theory of graph reduction for the canonical combinators S, K, and I, where graph vertices are represented with evaluation contexts and let expressions. We express this first syntactic theory as a storeless reduction semantics of combinatory terms. We then factor out the ..."
Abstract

Cited by 1 (0 self)
 Add to MetaCart
We present a purely syntactic theory of graph reduction for the canonical combinators S, K, and I, where graph vertices are represented with evaluation contexts and let expressions. We express this first syntactic theory as a storeless reduction semantics of combinatory terms. We then factor out the introduction of let expressions to denote as many graph vertices as possible upfront instead of on demand. The factored terms can be interpreted as term graphs in the sense of Barendregt et al. We express this second syntactic theory, which we prove equivalent to the first, as a storeless reduction semantics of combinatory term graphs. We then recast let bindings as bindings in a global store, thus shifting, in Strachey’s words, from denotable entities to storable entities. The storebased terms can still be interpreted as term graphs. We express this third syntactic theory, which we prove equivalent to the second, as a storebased reduction semantics of machine. The architecture of this storebased abstract machine coincides with that of Turner’s original reduction machine. The three syntactic theories presented here therefore properly account for combinatory graph reduction As We Know It. These three syntactic theories scale to handling the Y combinator. This article therefore illustrates the scientific consensus of theoreticians and implementors about graph reduction: it is the same combinatory
This document in subdirectory RS/03/26 / LambdaLifting in Quadratic Time ∗
, 2003
"... Reproduction of all or part of this work is permitted for educational or research use on condition that this copyright notice is included in any copy. See back inner page for a list of recent BRICS Report Series publications. Copies may be obtained by contacting: BRICS ..."
Abstract
 Add to MetaCart
Reproduction of all or part of this work is permitted for educational or research use on condition that this copyright notice is included in any copy. See back inner page for a list of recent BRICS Report Series publications. Copies may be obtained by contacting: BRICS
Contents
, 2012
"... This paper is a companion technical report to the article “ContinuationPassing C: from threads to events through continuations”. It contains the complete version of the proofs of ..."
Abstract
 Add to MetaCart
This paper is a companion technical report to the article “ContinuationPassing C: from threads to events through continuations”. It contains the complete version of the proofs of