Proceedings of the 3rd ACM SIGACT-SIGPLAN Symposium on Principles on Programming Languages - POPL '76 1976
DOI: 10.1145/800168.811543
|View full text |Cite
|
Sign up to set email alerts
|

A lazy evaluator

Abstract: A different way to execute pure LISP programs is presented. It delays the evaluation of parameters and list structures without ever having to perform more evaluation steps than the usual method. Although the central idea can be found in earlier work this paper is of interest since it treats a rather well-known language and works out an algorithm which avoids ' full substitution.A partial correctness proof using Scott-Strachey semantics is sketched in a later section.

Help me understand this report

Search citation statements

Order By: Relevance

Paper Sections

Select...
1
1
1
1

Citation Types

0
92
0

Year Published

1978
1978
2024
2024

Publication Types

Select...
8
1

Relationship

0
9

Authors

Journals

citations
Cited by 263 publications
(92 citation statements)
references
References 4 publications
0
92
0
Order By: Relevance
“…This is conceptually related to lazy evaluation (Henderson and Morris, 1976) known from some programming languages like Haskell. The term "lazy cryptography" is avoided in favour of "deferred cryptography" because cryptography itself is not weakened.…”
Section: Deferred Cryptographymentioning
confidence: 99%
“…This is conceptually related to lazy evaluation (Henderson and Morris, 1976) known from some programming languages like Haskell. The term "lazy cryptography" is avoided in favour of "deferred cryptography" because cryptography itself is not weakened.…”
Section: Deferred Cryptographymentioning
confidence: 99%
“…Our running example is typical file processing: to read and print a file expanding all tabs 5 . Ideally, reading file data, tab expansion itself, and writing the result should be separated, so each can be replaced.…”
Section: Effectsmentioning
confidence: 99%
“…Since lazy evaluation corresponds to an implicit and stylized use of coroutines [5][6][7][8], it is natural to consider an explicit stylized use of coroutines. Such alternatives, historically known as generators or iterators, have indeed been used to structure programs using "pipelines" of producers and consumers [9] following Jackson's principles of program design [10].…”
Section: Introductionmentioning
confidence: 99%
“…A more efficient solution-and indeed a traditional motivation for lazy evaluation [27,32]-is to construct the sequences lazily and to traverse them on demand. In the following generator, the data type sequence implements finite lazy sequences; the construction of the rest of the lazy sequence is delayed with a thunk of type unit -> sequence; and make sequence is defined as an accumulator-based flatten function: Unlike in the eager solution, the construction of the sequence in Lazy generator and the comparisons in same fringe are interleaved.…”
Section: A Lazy Traversalmentioning
confidence: 99%