Concepedia

Publication | Closed Access

A functional correspondence between evaluators and abstract machines

141

Citations

31

References

2003

Year

TLDR

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.

Abstract

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.

References

YearCitations

Page 1