Proving Theorems about LISP Functions
Journal of the ACM (JACM)
Initial Algebra Semantics and Continuous Algebras
Journal of the ACM (JACM)
Communications of the ACM
Functional Programming
Denotational Semantics: The Scott-Strachey Approach to Programming Language Theory
Denotational Semantics: The Scott-Strachey Approach to Programming Language Theory
Final data type specifications: a new data type specification method
POPL '80 Proceedings of the 7th ACM SIGPLAN-SIGACT symposium on Principles of programming languages
A constructive alternative to axiomatic data type definitions
LFP '80 Proceedings of the 1980 ACM conference on LISP and functional programming
POPL '76 Proceedings of the 3rd ACM SIGACT-SIGPLAN symposium on Principles on programming languages
On the productivity of recursive list definitions
ACM Transactions on Programming Languages and Systems (TOPLAS)
Sacrificing simplicity for convenience: Where do you draw the line?
POPL '88 Proceedings of the 15th ACM SIGPLAN-SIGACT symposium on Principles of programming languages
POPL '85 Proceedings of the 12th ACM SIGACT-SIGPLAN symposium on Principles of programming languages
Exact real arithmetic: a case study in higher order programming
LFP '86 Proceedings of the 1986 ACM conference on LISP and functional programming
Static inference of properties of applicative programs
POPL '84 Proceedings of the 11th ACM SIGACT-SIGPLAN symposium on Principles of programming languages
Busy and lazy FP with infinite objects
LFP '84 Proceedings of the 1984 ACM Symposium on LISP and functional programming
A typical synergy: dynamic types and generalised algebraic datatypes
IFL'09 Proceedings of the 21st international conference on Implementation and application of functional languages
Hi-index | 0.00 |
Since the publication of two influential papers on lazy evaluation in 1976 [Henderson and Morris, Friedman and Wise], the idea has gained widespread acceptance among language theoreticians—particularly among the advocates of “functional programming” [Henderson80, Backus78]. There are two basic reasons for the popularity of lazy evaluation. First, by making some of the data constructors in a functional language non-strict, it supports programs that manipulate “infinite objects” such as recursively enumerable sequences, which may make some applications easier to program. Second, by delaying evaluation of arguments until they are actually needed, it may speed up computations involving ordinary finite objects. First, there are several semantically distinct definitions of lazy evaluation that plausibly capture the intuitive notion. Second, non-trivial lazy spaces are similar in structure (under the approximation ordering) to universal domains (as defined by Scott [Scott81, Scott76]) such as the P@@@@ model for the untyped lambda calculus. Third, we prove that neither initial algebra specifications [ADJ76,77] nor final algebra specifications [Guttag78, Kamin80] have the power to define lazy spaces. Fourth, although lazy spaces have the same “higher-order” structure as P@@@@, they nevertheless have an elegant, natural characterization within first order logic. In this paper, we develop a simple, yet comprehensive first order theory of lazy spaces relying on three axiom schemes asserting (1) the principle of structural induction for finite objects; (2) the existence of least upper bounds for directed sets; and (3) the continuity of functions.