Skip to main content
    • Aa
    • Aa

Small-step and big-step semantics for call-by-need


We present natural semantics for acyclic as well as cyclic call-by-need lambda calculi, which are proved equivalent to the reduction semantics given by Ariola and Felleisen (J. Funct. Program., vol. 7, no. 3, 1997). The natural semantics are big-step and use global heaps, where evaluation is suspended and memorized. The reduction semantics are small-step, and evaluation is suspended and memorized locally in let-bindings. Thus two styles of formalization describe the call-by-need strategy from different angles. The natural semantics for the acyclic calculus is revised from the previous presentation by Maraist et al. (J. Funct. Program., vol. 8, no. 3, 1998), and its adequacy is ascribed to its correspondence with the reduction semantics, which has been proved equivalent to call-by-name by Ariola and Felleisen. The natural semantics for the cyclic calculus is inspired by that of Launchbury (1993) and Sestoft (1997), and we state its adequacy using a denotational semantics in the style of Launchbury; adequacy of the reduction semantics for the cyclic calculus is in turn ascribed to its correspondence with the natural semantics.

Linked references
Hide All

This list contains references from the content that can be linked to their source. For a full set of references and notes please see the PDF or HTML where available.

S. Abramsky & C.-H. L. Ong (1993) Full abstraction in the lazy lambda calculus, Inf. Comput., 105 (2): 159267.

Z. Ariola & M. Felleisen (1997) The call-by-need lambda calculus. J. Funct. Program., 7 (3): 265301.

Z. M. Ariola & S. Blom (1997) Cyclic lambda calculi. In Proc. Theoretical Aspects of Computer Software. M. Abadi and T. Ito (eds), Lecture Notes in Computer Science, vol. 1281. Springer, Berlin/Heidelberg, pp. 77106.

J. Launchbury (1993) A natural semantics for lazy evaluation. In Proceedings of the ACM SIGPLAN-SIGACT Symposium on the Principles of Programming Languages, Charleston, SC, USA.

J. Maraist , M. Odersky & P. Wadler (1998) A call-by-need lambda calculus, J. Funct. Program., 8 (3): 275317.

C. Okasaki , P. Lee & D. Tarditi (1994) Call-by-need and continuation-passing style, LISP Symbol. Comput., 7 (1): 5782.

G. Plotkin (1975) Call-by-name, Call-by-value and the λ-Calculus, Theoret. Comp. Sci., 1 (2): 125159.

P. Sestoft (1997) Deriving a lazy abstract machine, J. Funct. Program., 7 (3): 231264.

D. Syme (2005) Initializing mutually referential abstract objects: The value recursion challenge. In Proceedings of the Workshop on ML, Electr. Notes Theor. Comput. Sci., Tallinn, Estonia, 148 (2): 325.

A. K. Wright & M. Felleisen (1994) A syntactic approach to type soundness. Information and Computation, 115 (1): 3894.

Recommend this journal

Email your librarian or administrator to recommend adding this journal to your organisation's collection.

Journal of Functional Programming
  • ISSN: 0956-7968
  • EISSN: 1469-7653
  • URL: /core/journals/journal-of-functional-programming
Please enter your name
Please enter a valid email address
Who would you like to send this to? *