Abstract
Current implementations of non-strict functional languages rely on call-by-name reduction to implement the λ-calculus. An interesting alternative is head occurrence reduction, a reduction strategy specifically designed for the implementation of non-strict, purely functional languages. This work introduces the very lazy λ -calculus, which allows a systematic description of this approach. It is not based on regular β-reduction but a generalised rewriting rule called γ-reduction that requires fewer reductions to obtain useful results from a term. It therefore promises more efficient program execution than conventional execution models. To demonstrate the applicability of the approach, an adaptation of the Pointer Abstract Machine (PAM) is specified that implements the very lazy λ-calculus and constitutes a foundation for a new class of efficient functional language implementations.
Access this chapter
Tax calculation will be finalised at checkout
Purchases are for personal use only
Preview
Unable to display preview. Download preview PDF.
Similar content being viewed by others
References
Fairbairn, J., Wray, S.: Tim: A simple, lazy abstract machine to execute supercombinators. In: Kahn, G. (ed.) FPCA 1987. LNCS, vol. 274, pp. 34–45. Springer, Heidelberg (1987)
Krivine, J.-L.: A call-By-name lambda-calculus machine. Higher Order and Symbolic Computation 20(3), 199–207 (2007)
Peyton Jones, S.L., Wadler, P., Hancock, P.: The implementation of functional programming languages. Prentice Hall International, Englewood Cliffs (1987)
Burn, G.L., Peyton Jones, S.L., Robson, J.D.: The spineless G-machine. In: Proceedings of the 1988 ACM conference on LISP and functional programming, pp. 244–258. ACM, New York (1988)
Peyton Jones, S.L.: Implementing lazy functional languages on stock hardware: the Spineless Tagless G-machine - Version 2.5, Department of Computing Science, University of Glasgow, July 9 (1992)
Leijen, D.: The lazy virtual machine specification, Institute of Information and Computing Sciences, Utrecht University, August 22 (2005)
Holyer, I., Spiliopoulou, E.: The Brisk Machine: a simplified STG machine, University of Bristol, Department of Computer Science (March 1998)
Barendregt, H.P.: The Lambda Calculus: Its syntax and semantics (1984)
Danos, V., Regnier, L.: Head linear reduction (unpublished), http://iml.univ-mrs.fr/~regnier/articles.html (June 7, 2004)
Danos, V., Herbelin, H., Regnier, L.: Game semantics and abstract machines. In: Symposium on Logic in Computer Science, September 2, p. 394. IEEE Computer Society, Los Alamitos (1996)
De Bruijn, N.G.: Lambda Calculus Notation with Nameless Dummies – a Tool for Automatic Formula Manipulation, with Application to the Church-Rosser Theorem. Indagationes Mathematicae, 381–392 (1972)
Hughes, R.J.M.: Super-Combinators – a new implementation method for applicative languages. In: Proceedings of the 1982 ACM symposium on LISP and functional programming, pp. 1–10. ACM, New York (1982)
Kamareddine, F., Bloo, R., Nederpelt, R.: De Bruijn’s syntax and reductional equivalence of λ-terms. In: Proceedings of the 3rd ACM SIGPLAN international conference on Principles and practice of declarative programming, pp. 16–27. ACM, New York (2001)
Danvy, O., Schultz, U.P.: Lambda-dropping: transforming recursive equations into programs with block structure. Partial evaluation and semantics-based program manipulation 248(1-2), 243–287 (2000)
Marlow, S., Peyton Jones, S.: Making a fast curry: push/enter vs. eval/apply for higher-order languages. Journal of Functional Programming 16, 415–449 (2006)
Sestoft, P.: Demonstrating lambda calculus reduction. In: Jones, D., Mogensen, T.Æ., Schmidt, D.A., Sudborough, I.H. (eds.) The Essence of Computation. LNCS, vol. 2566, pp. 420–435. Springer, Heidelberg (2002)
Lévy, J.-J.: Optimal reductions in the lambda-calculus. In: Seldin, J.P., Hindley, J.R. (eds.) To H.B. Curry: Essays on Combinatory Logic, Lambda Calculus and Formalism, Academic Press, London (1978)
Author information
Authors and Affiliations
Editor information
Editors and Affiliations
Rights and permissions
Copyright information
© 2010 Springer-Verlag Berlin Heidelberg
About this paper
Cite this paper
Rochel, J. (2010). The Very Lazy λ-Calculus and the STEC Machine. In: Morazán, M.T., Scholz, SB. (eds) Implementation and Application of Functional Languages. IFL 2009. Lecture Notes in Computer Science, vol 6041. Springer, Berlin, Heidelberg. https://doi.org/10.1007/978-3-642-16478-1_12
Download citation
DOI: https://doi.org/10.1007/978-3-642-16478-1_12
Publisher Name: Springer, Berlin, Heidelberg
Print ISBN: 978-3-642-16477-4
Online ISBN: 978-3-642-16478-1
eBook Packages: Computer ScienceComputer Science (R0)