Published online by Cambridge University Press: 24 July 2006
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.