Reversible, Irreversible and Optimal lambda-Machines

Abstract Lambda-calculus is the core of functional programming, and many different ways to evaluate lambda-terms have been considered. One of the nicest, from the theoretical point of view, is head linear reduction. We compare two ways of implementing that specific evaluation strategy: “Krivine's abstract machine” and the “interaction abstract machine”. Runs on those machines stand in a relation which can be accurately described using the call/return symmetry discovered by Asperti and Laneve.