Functional programing and the logical variable
POPL '85 Proceedings of the 12th ACM SIGACT-SIGPLAN symposium on Principles of programming languages
Efficient compilation of lazy evaluation
SIGPLAN '84 Proceedings of the 1984 SIGPLAN symposium on Compiler construction
POPL '77 Proceedings of the 4th ACM SIGACT-SIGPLAN 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
Static inference of properties of applicative programs
POPL '84 Proceedings of the 11th ACM SIGACT-SIGPLAN symposium on Principles of programming languages
Applications of feedback in functional programming
FPCA '81 Proceedings of the 1981 conference on Functional programming languages and computer architecture
Optimized concurrent execution of an applicative language (dataflow)
Optimized concurrent execution of an applicative language (dataflow)
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
A collecting interpretation of expressions
POPL '88 Proceedings of the 15th 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
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)
Fast strictness analysis based on demand propagation
ACM Transactions on Programming Languages and Systems (TOPLAS)
Hi-index | 0.00 |
Static evaluation underlies essentially all techniques for a priori semantic program manipulation, i.e. those that stop short of fully general execution. Included are such activities as type checking, partial evaluation, and, ultimately, optimized compilation.This paper describes a novel approach to static evaluation of programs in functional languages involving infinite data objects, i.e. those using normal order or “lazy” evaluation. Its principal features are abstract interpretation on a domain of demand patterns, and a notion of function “reversal”. The latter associates with each function f a derived function f' mapping demand patterns on f to demand patterns on its formal parameter. This is used for a comprehensive form of strictness analysis, aiding in efficient compilation.This analysis leads to a revised notion of basic block, appropriate as an intermediate representation for a normal order functional language. An implementation of the analysis technique in Prolog is sketched, as well as an effort currently underway to apply the technique to the generation of optimized G-machine code.