Compiling strictness into streams
POPL '87 Proceedings of the 14th ACM SIGACT-SIGPLAN symposium on Principles of programming languages
Lazy functional languages: abstract interpretation and compilation
Lazy functional languages: abstract interpretation and compilation
Head-strictness is not a monotonic abstract property
Information Processing Letters
Parallel implementation of lazy functional languages using abstract demand propagation
Parallel implementation of lazy functional languages using abstract demand propagation
Projections for strictness analysis
Proceedings of the Functional Programming Languages and Computer Architecture
ICALP '87 Proceedings of the 14th International Colloquium, on Automata, Languages and Programming
A Loop-Detecting Interpreter for Lazy, Higher-Order Programs
Proceedings of the 1992 Glasgow Workshop on Functional Programming
Algorithm + strategy = parallelism
Journal of Functional Programming
The Implementation of Functional Programming Languages (Prentice-Hall International Series in Computer Science)
Hi-index | 0.00 |
A new denotational semantics is introduced for realistic nonstrict functional languages, which have a polymorphic type system and support higher order functions and user definable algebraic data types. It maps each function definition to a demand propagator, which is a higher order function, that propagates context demands to function arguments. The relation of this "higher order demand propagation semantics" to the standard semantics is explained and it is used to define a backward strictness analysis. The strictness information deduced by this analysis is very accurate, because demands can actually be constructed during the analysis. These demands conform better to the analysed functions than abstract values, which are constructed alone with respect to types like in other existing strictness analyses. The richness of the semantic domains of higher order demand propagation makes it possible to express generalised strictness information for higher order functions even across module boundaries.