# Evaluating Call-by-Need on the Control Stack

@inproceedings{Chang2010EvaluatingCO, title={Evaluating Call-by-Need on the Control Stack}, author={Stephen Chang and David Van Horn and Matthias Felleisen}, booktitle={Trends in Functional Programming}, year={2010} }

Ariola and Felleisen's call-by-need λ-calculus replaces a variable occurrence with its value at the last possible moment. To support this gradual notion of substitution, function applications--once established--are never discharged. In this paper we show how to translate this notion of reduction into an abstract machine that resolves variable references via the control stack. In particular, the machine uses the static address of a variable occurrence to extract its current value from the…

## 4 Citations

### A synthetic operational account of call-by-need evaluation

- Computer SciencePPDP
- 2013

The first operational account of call by need that connects syntactic theory and implementation practice is presented, revealing a genuine and principled unity of computational theory and computational practice, one that readily applies to variations on the general theme ofcall by need.

### Lazy v. Yield: Incremental, Linear Pretty-Printing

- Computer ScienceAPLAS
- 2012

A programming style for incremental stream processing based on typed simple generators that promotes modularity and decoupling of producers and consumers just like lazy evaluation and gives a new solution to the notorious pretty-printing problem.

### Three syntactic theories for combinatory graph reduction

- Computer ScienceTOCL
- 2013

This article illustrates the scientific consensus of theoreticians and implementors about graph reduction: it is the same combinatory elephant.

## References

SHOWING 1-9 OF 9 REFERENCES

### A call-by-need lambda calculus

- Computer SciencePOPL '95
- 1995

This paper derives an equational characterization of call-by-need and proves it correct with respect to the original lambda calculus and is a strictly smaller theory than the lambda calculus.

### Defunctionalized Interpreters for Call-by-Need Evaluation

- PhilosophyFLOPS
- 2010

This work inter-derive a series of hygienic semantic artifacts: a reduction-free stateless abstract machine, a continuation-passing evaluation function, and what appears to be the first heapless natural semantics for call-by-need evaluation.

### Tail-Recursive Stack Disciplines for an Interpreter

- Computer Science
- 1992

This paper examines several diierent methods of implementing proper tail recursion in a stack-based interpeter, including passing arguments in a heap, copying arguments to tail-recursive calls, and garbage collecting the stack.

### The Revised Report on the Syntactic Theories of Sequential Control and State

- Computer ScienceTheor. Comput. Sci.
- 1992

### The lambda calculus - its syntax and semantics

- MathematicsStudies in logic and the foundations of mathematics
- 1985

### Semantics Engineering with PLT Redex

- Computer Science
- 2009

This text is the first comprehensive presentation of reduction semantics in one volume and introduces the first reliable and easy-to-use tool set for such forms of semantics, and presents a framework for the formulation of language models as PLT Redex models.

### Lazy evaluation and delimited control

- Computer SciencePOPL '09
- 2009

The call-by-need lambda calculus provides an equational framework for reasoning syntactically about lazy evaluation. This paper examines its operational characteristics.
By a series of reasoning…

### Call-by-name, call-by-value and the λ-calculus

- Theoretical Computer Science 1
- 1975