Strictness analysis—a practical approach
Proc. of a conference on Functional programming languages and computer architecture
Serial combinators: “optimal” grains of parallelism
Proc. of a conference on Functional programming languages and computer architecture
Journal of the ACM (JACM)
POPL '77 Proceedings of the 4th ACM SIGACT-SIGPLAN symposium on Principles of programming languages
The Denotational Description of Programming Languages: An Introduction
The Denotational Description of Programming Languages: An Introduction
The Design and Analysis of Computer Algorithms
The Design and Analysis of Computer Algorithms
Principal type-schemes for functional programs
POPL '82 Proceedings of the 9th ACM SIGPLAN-SIGACT symposium on Principles of programming languages
The Theory and Practice of Transforming Call-by-need into Call-by-value
Proceedings of the Fourth 'Colloque International sur la Programmation' on International Symposium on Programming
A combinator-based compiler for a functional language
POPL '84 Proceedings of the 11th ACM SIGACT-SIGPLAN symposium on Principles of programming languages
The PSG system: from formal language definitions to interactive programming environments
ACM Transactions on Programming Languages and Systems (TOPLAS)
Compiling strictness into streams
POPL '87 Proceedings of the 14th ACM SIGACT-SIGPLAN symposium on Principles of programming languages
On strictness and its analysis
POPL '87 Proceedings of the 14th ACM SIGACT-SIGPLAN symposium on Principles of programming languages
Computation of aliases and support sets
POPL '87 Proceedings of the 14th ACM SIGACT-SIGPLAN symposium on Principles of programming languages
Lazy evaluation and the logic variable
ICS '88 Proceedings of the 2nd international conference on Supercomputing
A collecting interpretation of expressions
POPL '88 Proceedings of the 15th ACM SIGPLAN-SIGACT symposium on Principles of programming languages
Copy elimination in functional languages
POPL '89 Proceedings of the 16th ACM SIGPLAN-SIGACT symposium on Principles of programming languages
Using projection analysis of evaluation-order and its application
LFP '90 Proceedings of the 1990 ACM conference on LISP and functional programming
Binding time analysis for high order untyped functional languages
LFP '90 Proceedings of the 1990 ACM conference on LISP and functional programming
A relationship between abstract interpretation and projection analysis
POPL '90 Proceedings of the 17th ACM SIGPLAN-SIGACT symposium on Principles of programming languages
Small domains spell fast strictness analysis
POPL '90 Proceedings of the 17th ACM SIGPLAN-SIGACT symposium on Principles of programming languages
Update analysis and the efficient implementation of functional aggregates
FPCA '89 Proceedings of the fourth international conference on Functional programming languages and computer architecture
Strictness analysis: a new perspective based on type inference
FPCA '89 Proceedings of the fourth international conference on Functional programming languages and computer architecture
On the power and limitation of strictness analysis based on abstract interpretation
POPL '91 Proceedings of the 18th ACM SIGPLAN-SIGACT symposium on Principles of programming languages
Collecting interpretations of expressions
ACM Transactions on Programming Languages and Systems (TOPLAS)
Parameterized partial evaluation
PLDI '91 Proceedings of the ACM SIGPLAN 1991 conference on Programming language design and implementation
Reference escape analysis: optimizing reference counting based on the lifetime of references
PEPM '91 Proceedings of the 1991 ACM SIGPLAN symposium on Partial evaluation and semantics-based program manipulation
PLDI '92 Proceedings of the ACM SIGPLAN 1992 conference on Programming language design and implementation
POPL '92 Proceedings of the 19th ACM SIGPLAN-SIGACT symposium on Principles of programming languages
The correctness of an optimized code generation
PEPM '93 Proceedings of the 1993 ACM SIGPLAN symposium on Partial evaluation and semantics-based program manipulation
Completeness and predicate-based abstract interpretation
PEPM '93 Proceedings of the 1993 ACM SIGPLAN symposium on Partial evaluation and semantics-based program manipulation
Path analysis and the optimization of nonstrict functional languages
ACM Transactions on Programming Languages and Systems (TOPLAS)
In-place updates in the presence of control operators
LFP '94 Proceedings of the 1994 ACM conference on LISP and functional programming
On the complexity of dataflow analysis of logic programs
ACM Transactions on Programming Languages and Systems (TOPLAS)
Fast strictness analysis based on demand propagation
ACM Transactions on Programming Languages and Systems (TOPLAS)
First-class schedules and virtual maps
FPCA '95 Proceedings of the seventh international conference on Functional programming languages and computer architecture
On the power and limitations of strictness analysis
Journal of the ACM (JACM)
On the complexity of escape analysis
Proceedings of the 24th ACM SIGPLAN-SIGACT symposium on Principles of programming languages
Variations on strictness analysis
LFP '86 Proceedings of the 1986 ACM conference on LISP and functional programming
Para-functional programming: a paradigm for programming multiprocessor systems
POPL '86 Proceedings of the 13th ACM SIGACT-SIGPLAN symposium on Principles of programming languages
A history of Haskell: being lazy with class
Proceedings of the third ACM SIGPLAN conference on History of programming languages
Software protection through dynamic code mutation
WISA'05 Proceedings of the 6th international conference on Information Security Applications
Hi-index | 0.00 |
A function is said to be strict in one of its formal parameters if, in all calls to the function, either the corresponding actual parameter is evaluated, or the call does not terminate. Detecting which arguments a function will surely evaluate is a problem that arises often in program transformation and compiler optimization. We present a strategy that allows one to infer strictness properties of functions expressed in the lambda calculus. Our analysis improves on previous work in that (1) a set-theoretic characterization of strictness is used that permits treatment of free variables, which in turn permits a broader range of interpretations, and (2) the analysis provides an effective treatment of higher-order functions. We also prove a result due to Meyer [15]: the problem of first-order strictness analysis is complete in deterministic exponential time. However, because the size of most functions is small, the complexity seems to be tractable in practice.This research was supported in part by NSF Grant MCS-8302018, and a Faculty Development Award from IBM.