Skip to main content

The Very Lazy λ-Calculus and the STEC Machine

  • Conference paper
Book cover Implementation and Application of Functional Languages (IFL 2009)

Part of the book series: Lecture Notes in Computer Science ((LNTCS,volume 6041))

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.

This is a preview of subscription content, log in via an institution to check access.

Access this chapter

Chapter
USD 29.95
Price excludes VAT (USA)
  • Available as PDF
  • Read on any device
  • Instant download
  • Own it forever
eBook
USD 39.99
Price excludes VAT (USA)
  • Available as PDF
  • Read on any device
  • Instant download
  • Own it forever
Softcover Book
USD 54.99
Price excludes VAT (USA)
  • Compact, lightweight edition
  • Dispatched in 3 to 5 business days
  • Free shipping worldwide - see info

Tax calculation will be finalised at checkout

Purchases are for personal use only

Institutional subscriptions

Preview

Unable to display preview. Download preview PDF.

Unable to display preview. Download preview PDF.

References

  1. 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)

    Chapter  Google Scholar 

  2. Krivine, J.-L.: A call-By-name lambda-calculus machine. Higher Order and Symbolic Computation 20(3), 199–207 (2007)

    Article  MathSciNet  MATH  Google Scholar 

  3. Peyton Jones, S.L., Wadler, P., Hancock, P.: The implementation of functional programming languages. Prentice Hall International, Englewood Cliffs (1987)

    Google Scholar 

  4. 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)

    Chapter  Google Scholar 

  5. 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)

    Google Scholar 

  6. Leijen, D.: The lazy virtual machine specification, Institute of Information and Computing Sciences, Utrecht University, August 22 (2005)

    Google Scholar 

  7. Holyer, I., Spiliopoulou, E.: The Brisk Machine: a simplified STG machine, University of Bristol, Department of Computer Science (March 1998)

    Google Scholar 

  8. Barendregt, H.P.: The Lambda Calculus: Its syntax and semantics (1984)

    Google Scholar 

  9. Danos, V., Regnier, L.: Head linear reduction (unpublished), http://iml.univ-mrs.fr/~regnier/articles.html (June 7, 2004)

  10. 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)

    Google Scholar 

  11. 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)

    Google Scholar 

  12. 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)

    Google Scholar 

  13. 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)

    Google Scholar 

  14. 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)

    MATH  Google Scholar 

  15. 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)

    Article  MathSciNet  MATH  Google Scholar 

  16. 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)

    Chapter  Google Scholar 

  17. 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)

    Google Scholar 

Download references

Author information

Authors and Affiliations

Authors

Editor information

Editors and Affiliations

Rights and permissions

Reprints 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)

Publish with us

Policies and ethics