A Rational Deconstruction of Landin's SECD Machine with the J Operator
Olivier Danvy, Kevin Millikin

TL;DR
This paper revisits Landin's SECD machine and the J operator, providing modernized versions, formal characterizations, and reduction semantics to deepen understanding of control operators in functional programming.
Contribution
It introduces a modernized, bisimilar SECD machine without a data stack, characterizes the J operator via CPS and delimited-control operators, and offers the first syntactic theories for applicative expressions with J.
Findings
Modernized SECD machine operates in lockstep with the original but without a data stack.
The caller-save version of the machine aligns with Thielecke's double-barrelled continuations.
Provides reduction semantics for applicative expressions with J, linking to explicit substitution calculus.
Abstract
Landin's SECD machine was the first abstract machine for applicative expressions, i.e., functional programs. Landin's J operator was the first control operator for functional languages, and was specified by an extension of the SECD machine. We present a family of evaluation functions corresponding to this extension of the SECD machine, using a series of elementary transformations (transformation into continu-ation-passing style (CPS) and defunctionalization, chiefly) and their left inverses (transformation into direct style and refunctionalization). To this end, we modernize the SECD machine into a bisimilar one that operates in lockstep with the original one but that (1) does not use a data stack and (2) uses the caller-save rather than the callee-save convention for environments. We also identify that the dump component of the SECD machine is managed in a callee-save way. The…
Peer Reviews
No public reviews on file for this paper yet. If you reviewed it on a platform where reviews are public (OpenReview, ICLR, NeurIPS, ICML), you can paste yours below so the community can read it here.
Videos
No videos yet. Explain this paper in a talk, walkthrough, or lecture? Add one.
