Abstract
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.
Cite
CITATION STYLE
Lindstrom, G. (1986). Static evaluation of functional programs. In Proceedings of the 1986 SIGPLAN Symposium on Compiler Construction, SIGPLAN 1986 (pp. 196–206). Association for Computing Machinery, Inc. https://doi.org/10.1145/12276.13331
Register to see more suggestions
Mendeley helps you to discover research relevant for your work.