Refunctionalization at Work
Olivier Danvy,Kevin Millikin +1 more
TL;DR: The left inverse of Reynolds's defunctionalization is presented and its relevance to programming and to programming languages is shown, and it is illustrated with a recognizer for Dyck words and with Dijkstra's shunting-yard algorithm.
read more
Abstract: We present the left inverse of Reynolds's defunctionalization and we show its relevance to programming and to programming languages. We present two methods to put a program that is almost in defunctionalized form into one that is actually in defunctionalized form, and we illustrate them with a recognizer for Dyck words and with Dijkstra's shunting-yard algorithm.
read more
Chat with Paper
AI Agents for this Paper
Find similar papers on Google Scholar, PubMed and Arxiv
Write a critical review of this paper
Analyze citations of this paper to find unaddressed research gaps
Citations
Defunctionalized interpreters for programming languages
Olivier Danvy
- 20 Sep 2008
TL;DR: This document illustrates how functional implementations of formal semantics (structural operational semantics, reduction semantics, small-step and big-step abstract machines, natural semantics, and denotational semantics) can be transformed into each other.
Abstract interpreters for free
Matthew Might
- 14 Sep 2010
TL;DR: This work presents a two-step method to convert a smallstep concrete semantics into a family of sound, computable abstract interpretations, and systematically abstracts the continuation-passing style lambda calculus to arrive at two distinct families of analyses.
Defunctionalized interpreters for call-by-need evaluation
Olivier Danvy,Kevin Millikin,Johan Munk,Ian Zerny +3 more
- 19 Apr 2010
TL;DR: This work inter-derive a series of hygienic semantic artifacts: a reduction-free stateless abstract machine, a continuation-passing evaluation function, and what appears to be the first heapless natural semantics for call-by-need evaluation.
On the Equivalence between Small-Step and Big-Step Abstract Machines: A Simple Application of Lightweight Fusion
Olivier Danvy,Kevin Millikin +1 more
TL;DR: It is shown how Ohori and Sasano's recent lightweight fusion by fixed-point promotion provides a simple way to prove the equivalence of the two standard styles of specification of abstract machines: in small-step form, as a state-transition function together with a `driver loop,' and in big- step form as a tail-recursive function that directly maps a given configuration to a final state, if any.
On inter-deriving small-step and big-step semantics: A case study for storeless call-by-need evaluation
TL;DR: This work inter-derive a series of hygienic semantic artifacts: a reduction-free storeless abstract machine, a continuation-passing evaluation function, and what appears to be the first heapless natural semantics for call-by-need evaluation.
29
References
Letters to the editor: go to statement considered harmful
TL;DR: My considerations are that, although the programmer's activity ends when he has constructed a correct program, the process taking place under control of his program is the true subject matter of his activity, and that his intellectual powers are rather geared to master static relations and his powers to visualize processes evolving in time are relatively poorly developed.
1K
Abstracting control
Olivier Danvy,Andrzej Filinski +1 more
- 01 May 1990
TL;DR: This article investigates an alternative formulation of continuations, exploiting the latent expressive power of the standard continuation-passing style (CPS) instead of introducing yet other new concepts, and describes an improved conversion into applicative-order CPS.
472
Lambda lifting: transforming programs to recursive equations
Thomas Johnsson
- 01 Jan 1985
TL;DR: Different ways of doing lambda lifting are presented, as well as reasons for rejecting or selecting the method used in the Lazy ML compiler.
426
Representing Control: a Study of the CPS Transformation
Olivier Danvy,Andrzej Filinski +1 more
TL;DR: It is shown that by appropriate η-expansion of Fisher and Plotkin's two-pass equational specification of the CPS transform, a static and context-free separation of the result terms into “essential” and “administrative” constructs is obtained.
391