2003 · 142 citations · 31 references
ComputingComputer ScienceProgramming LanguagesSemanticsSyntaxFunctional ProgrammingRecursion TheoryType SystemsAbstract MachinesClosure ConversionContinuation-passing StyleDefunctionalizationDenotational ModelsLambda CalculusLambda Calculus Semantics
The authors aim to bridge the gap between functional evaluators and abstract machines for the λ‑calculus, derive key machines, and compare their design spaces, including the Categorical Abstract Machine. They use closure conversion, continuation‑passing style, and defunctionalization to derive Krivine’s and CEK machines from evaluators, and formally compare these machines and the Categorical Abstract Machine. The authors find that deriving Krivine’s machine is simpler than existing approaches, that deriving the CEK machine is novel, and that both machines correspond to call‑by‑name and call‑by‑value facets of a standard evaluator, while also exposing the denotational content of the CLS and SECD machines.
We bridge the gap between functional evaluators and abstract machines for the λ-calculus, using closure conversion, transformation into continuation-passing style, and defunctionalization.We illustrate this approach by deriving Krivine's abstract machine from an ordinary call-by-name evaluator and by deriving an ordinary call-by-value evaluator from Felleisen et al.'s CEK machine. The first derivation is strikingly simpler than what can be found in the literature. The second one is new. Together, they show that Krivine's abstract machine and the CEK machine correspond to the call-by-name and call-by-value facets of an ordinary evaluator for the λ-calculus.We then reveal the denotational content of Hannan and Miller's CLS machine and of Landin's SECD machine. We formally compare the corresponding evaluators and we illustrate some degrees of freedom in the design spaces of evaluators and of abstract machines for the λ-calculus with computational effects.Finally, we consider the Categorical Abstract Machine and the extent to which it is more of a virtual machine than an abstract machine.
31
Notions of computation and monads
Eugenio Moggi · Information and Computation · 1991 · 1.7K citations
Lecture Notes in Computer Science 1867
JF Baldwin, Trevor Martin, Aimilia Tzanavari · 2000 · 1.6K citations
A Transformation System for Developing Recursive Programs
R. M. Burstall, John Darlington · Journal of the ACM · 1977 · 1.3K citations · Full text
Call-by-name, call-by-value and the λ-calculus
Gordon Plotkin · Theoretical Computer Science · 1975 · 1.2K citations