Theoretical Computer Science
An abstract machine for Lambda-terms normalization
LFP '90 Proceedings of the 1990 ACM conference on LISP and functional programming
An algorithm for optimal lambda calculus reduction
POPL '90 Proceedings of the 17th ACM SIGPLAN-SIGACT symposium on Principles of programming languages
POPL '90 Proceedings of the 17th ACM SIGPLAN-SIGACT symposium on Principles of programming languages
The spineless tagless G-machine
FPCA '89 Proceedings of the fourth international conference on Functional programming languages and computer architecture
The geometry of optimal lambda reduction
POPL '92 Proceedings of the 19th ACM SIGPLAN-SIGACT symposium on Principles of programming languages
A natural semantics for lazy evaluation
POPL '93 Proceedings of the 20th ACM SIGPLAN-SIGACT symposium on Principles of programming languages
A call-by-need lambda calculus
POPL '95 Proceedings of the 22nd ACM SIGPLAN-SIGACT symposium on Principles of programming languages
An operational semantics of sharing in lazy evaluation
Science of Computer Programming
Information and Computation
YALE: yet another lambda evaluator based on interaction nets
ICFP '98 Proceedings of the third ACM SIGPLAN international conference on Functional programming
LFP '86 Proceedings of the 1986 ACM conference on LISP and functional programming
The optimal implementation of functional programming languages
The optimal implementation of functional programming languages
Non-deterministic interaction nets
Non-deterministic interaction nets
The call-by-need lambda calculus
Journal of Functional Programming
The call-by-need lambda calculus
Journal of Functional Programming
The Implementation of Functional Programming Languages (Prentice-Hall International Series in Computer Science)
Multiport interaction nets and concurrency
CONCUR 2005 - Concurrency Theory
Bottom-up β-reduction: uplinks and λ-DAGs
ESOP'05 Proceedings of the 14th European conference on Programming Languages and Systems
Call-by-name and call-by-value as token-passing interaction nets
TLCA'05 Proceedings of the 7th international conference on Typed Lambda Calculi and Applications
Rule-Based Operational Semantics for an Imperative Language
Electronic Notes in Theoretical Computer Science (ENTCS)
Complete Laziness: a Natural Semantics
Electronic Notes in Theoretical Computer Science (ENTCS)
Token-passing Nets for Functional Languages
Electronic Notes in Theoretical Computer Science (ENTCS)
Hi-index | 0.00 |
Recently, encodings in interaction nets of the call-by-name and call-by-value strategies of the $\lambda$-calculus have been proposed. The purpose of these encodings is to bridge the gap between interaction nets and traditional abstract machines, which are both used to provide lower-level specifications of strategies of the $\lambda$-calculus, but in radically different ways. The strength of these encodings is their simplicity, which comes from the simple idea of introducing an explicit syntactic object to represent the evaluation flow. Another benefit of this approach is that no artifact is needed to represent boxes. However, these encodings deliberately follow the implemented strategies (call-by-name and call-by-value) as closely as possible, and hence do not benefit from the ability of interaction nets to represent sharing easily. The aim of this paper is to show that better sharing (hence efficiency) can indeed be achieved without adding much structure. We thus present the call-by-need strategy following the same philosophy, which is, indeed, no more complicated than call-by-name. We also extend our approach to fully lazy reduction. This continues the task of bridging the gap between interaction nets and abstract machines, thus pushing forward a more uniform framework for implementations of the $\lambda$-calculus.