A simple and efficient implementation of strong call by need by an abstract machine
We present an abstract machine for a strong call-by-need strategy in the lambda calculus. The machine has been derived automatically from a higher-order evaluator that uses the technique of memothunks to implement laziness. The derivation has been done with the use of an off-the-shelf transformation...
Gespeichert in:
Veröffentlicht in: | Proceedings of ACM on programming languages 2022-08, Vol.6 (ICFP), p.109-136 |
---|---|
Hauptverfasser: | , , |
Format: | Artikel |
Sprache: | eng |
Online-Zugang: | Volltext |
Tags: |
Tag hinzufügen
Keine Tags, Fügen Sie den ersten Tag hinzu!
|
Zusammenfassung: | We present an abstract machine for a strong call-by-need strategy
in the lambda calculus. The machine has been derived automatically
from a higher-order evaluator that uses
the technique of
memothunks to implement laziness. The derivation has been done with the use of
an off-the-shelf transformation tool implementing the "functional correspondence" between higher-order interpreters and abstract machines,
and it
yields 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 bilinear number of steps. |
---|---|
ISSN: | 2475-1421 2475-1421 |
DOI: | 10.1145/3549822 |