A non-deterministic call-by-need lambda calculus

2Citations
Citations of this article
5Readers
Mendeley users who have this article in their library.

Abstract

In this paper we present a non-deterministic call-by-need (untyped) lambda calculus λnd with a constant choice and a let-syntax that models sharing. Our main result is that λnd has the nice operational properties of the standard lambda calculus: confluence on sets of expressions, and normal order reduction is sufficient to reach head normal form. Using a strong contextual equivalence we show correctness of several program transformations. In particular of lambda-lifting using deterministic maximal free expressions. These results show that λnd is a new and also natural combination of non-determinism and lambda-calculus, which has a lot of opportunities for parallel evaluation. An intended application of λnd is as a foundation for compiling lazy functional programming languages with I/O based on direct calls. The set of correct program transformations can be rigorously distinguished from non-correct ones. All program transformations are permitted with the slight exception that for transformations like common subexpression elimination and lambda-lifting with maximal free expressions the involved subexpressions have to be deterministic ones. © 1998 ACM.

Cite

CITATION STYLE

APA

Kutzner, A., & Schmidt-Schauß, M. (1999). A non-deterministic call-by-need lambda calculus. SIGPLAN Notices (ACM Special Interest Group on Programming Languages), 34(1), 324–335. https://doi.org/10.1145/291251.289462

Register to see more suggestions

Mendeley helps you to discover research relevant for your work.

Already have an account?

Save time finding and organizing research with Mendeley

Sign up for free