Strictness analysis—a practical approach
Proc. of a conference on Functional programming languages and computer architecture
Strictness analysis and polymorphic invariance
on Programs as data objects
The theory of strictness analysis for higher order functions
on Programs as data objects
A relational approach to strictness analysis for higher-order polymorphic functions
POPL '91 Proceedings of the 18th ACM SIGPLAN-SIGACT symposium on Principles of programming languages
A note on abstract interpretation of polymorphic functions
Proceedings of the 5th ACM conference on Functional programming languages and computer architecture
Implementing functional languages
Implementing functional languages
Approximate Fixed Points in Abstract Interpretation
ESOP '92 Proceedings of the 4th European Symposium on Programming
Implementing Projection-based Strictness Analysis
Proceedings of the 1991 Glasgow Workshop on Functional Programming
Hi-index | 0.00 |
This paper shows how to implement sensible polymorphic strictness analysis using the Frontiers algorithm. A central notion is to only ever analyse each function once, at its simplest polymorphic instance. Subsequent non-base uses of functions are dealt with by generalising their simplest instance analyses. This generalisation is done using an algorithm developed by Baraki, based on embedding-closure pairs. Compared with an alternative approach of expanding the program out into a collection of monomorphic instances, this technique is hundreds of times faster for realistic programs. There are some approximations involved, but these do not seem to have a detrimental effect on the overall result. The overall effect of this technology is to considerably expand the range of programs for which the Frontiers algorithm gives useful results reasonably quickly.