The power and efficiency of forward and backward strictness analysis
Marc Neuberger · 1993
Strictness analysis is a critical tool for optimization of lazy functional languages. Over the past decade or so, numerous approaches to the problem of strictness analysis have been proposed. These approaches generally can be classified as either or backward. Simply put, given an expression, forward reasoning asks the question If my variables are defined this much, how much will the result of my expression be defined? Backward reasoning asks the question If I need this level of definedness in my result, what level of definedness will be required of my variables? We compare prototypical examples of forward and backward strictness analysis and compare their power. We compare their expressive power, that is, the power of the languages of strictness properties, and their deductive power, the power of the systems which statically analyze programs to produce these strictness properties. We also study implementations of these strictness analysis systems and make some observations about the differences and similarities of the systems.