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.


Operational Semantic Abstract Machine Functional Language Graph Expansion Function Instance 
These keywords were added by machine and not by the authors. This process is experimental and the keywords may be updated as the learning algorithm improves.


Unable to display preview. Download preview PDF.

Unable to display preview. Download preview PDF.


  1. [Fairbairn 1987]
    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)CrossRefGoogle Scholar
  2. [Krivine 2007]
    Krivine, J.-L.: A call-By-name lambda-calculus machine. Higher Order and Symbolic Computation 20(3), 199–207 (2007)MathSciNetCrossRefzbMATHGoogle Scholar
  3. [Peyton Jones 1987]
    Peyton Jones, S.L., Wadler, P., Hancock, P.: The implementation of functional programming languages. Prentice Hall International, Englewood Cliffs (1987)Google Scholar
  4. [Burn 1988]
    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)CrossRefGoogle Scholar
  5. [Peyton Jones 1992]
    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 2005]
    Leijen, D.: The lazy virtual machine specification, Institute of Information and Computing Sciences, Utrecht University, August 22 (2005)Google Scholar
  7. [Holyer 1998]
    Holyer, I., Spiliopoulou, E.: The Brisk Machine: a simplified STG machine, University of Bristol, Department of Computer Science (March 1998)Google Scholar
  8. [Barendregt 1984]
    Barendregt, H.P.: The Lambda Calculus: Its syntax and semantics (1984)Google Scholar
  9. [Danos 2004]
    Danos, V., Regnier, L.: Head linear reduction (unpublished), (June 7, 2004)
  10. [Danos 1996]
    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 1972]
    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 1982]
    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 2001]
    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 2000]
    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)zbMATHGoogle Scholar
  15. [Marlow 2006]
    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)MathSciNetCrossRefzbMATHGoogle Scholar
  16. [Sestoft 2002]
    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)CrossRefGoogle Scholar
  17. [Lévy 1978]
    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

Copyright information

© Springer-Verlag Berlin Heidelberg 2010

Authors and Affiliations

  • Jan Rochel
    • 1
  1. 1.Department of Computer ScienceUniversiteit UtrechtThe Netherlands

Personalised recommendations