Polyvariant Strictness Analysis in UHC
Summary
Strictness analysis detects when it is safe to evaluate expressions before they actually need to be evaluated in a lazy language. We present the development of a polyvariant strictness analysis for Haskell. Previous developments typically used an ad hoc lambda-calculus based language that do not always reflect Haskell's complexity entirely, often lacking support for higher order functions, user defined datatypes, and recursion. Others that did have more extensive language support were mostly monovariant. Our system aims to cover both aspects: a polyvariant system with extensive support for higher order functions and user provided strictness annotations. This is then implemented in the Utrecht Haskell Compiler (UHC) to validate the system and observe its real world effects.