Transformation and Analysis of Functional Programs
Source: University of York
This paper describes techniques for transforming and analysing functional programs. The authors operate on a core language, to which Haskell programs can be reduced. They present a range of techniques, all of which have been implemented and evaluated. They make programs shorter by defining a library which abstracts over common data traversal patterns, removing boilerplate code. This library only supports traversals having value-specific behaviour for one type, allowing a simpler programming model. The library allows concise expression of traversals with competitive performance. They make programs faster by applying a variant of supercompilation. As a result of practical experiments, they have identified modifications to the standard supercompilation techniques - particularly with respect to let bindings and the generalisation technique.