English

A Simple and Efficient Implementation of Strong Call by Need by an Abstract Machine

Programming Languages 2026-03-24 v1

Abstract

Strong call-by-need combines full normalization with the sharing discipline of lazy evaluation, yet no prior implementation achieved both simplicity and efficiency. We introduce RKNL, an abstract machine that realizes strong call-by-need with bilinear overhead. The machine has been derived automatically from a higher-order evaluator that uses the technique of memothunks to implement laziness. By employing an off-the-shelf transformation tool implementing the ``functional correspondence'' between higher-order interpreters and abstract machines, we obtained a simple and concise description of the machine. We prove that the resulting machine conservatively extends the lazy version of Krivine machine for the weak call-by-need strategy, and that it simulates the normal-order strategy in a bilinear number of steps, i.e., linear in both the number of beta-reductions and the size of the input term.

Cite

@article{arxiv.2603.21949,
  title  = {A Simple and Efficient Implementation of Strong Call by Need by an Abstract Machine},
  author = {Małgorzata Biernacka and Witold Charatonik and Tomasz Drab},
  journal= {arXiv preprint arXiv:2603.21949},
  year   = {2026}
}

Comments

39 pages, 4 figures

R2 v1 2026-07-01T11:33:17.315Z