Partial Vectorisation of Haskell Programs

Abstract
Vectorisation for functional programs, also called the flattening
transformation, relies on drastically reordering computations and
restructuring the representation of data types. As a result, it only
applies to the purely functional core of a fully-fledged functional
language, such as Haskell or ML. A concrete implementation needs to apply
vectorisation selectively and integrate vectorised with unvectorised code.
This is challenging, as vectorisation alters the data representation, which
must be suitably converted between vectorised and unvectorised code. In
this paper, we present an approach to partial vectorisation that selectively
vectorises sub-expressions and data types, and also, enables linking
vectorised with unvectorised modules.