Techn. Report DI-PURe-05.06.01The subject of this paper is point-free functional
programming in Haskell. By this we mean writing programs using
categorically-inspired combinators, algebraic data types defined as
fixed points of functors, and impicit recursion through the use of
type-parameterized recursion patterns. This style of
programming is appropriate for program calculation (reasoning
about programs equationally), but difficult to actually use in
practice - most programmers use a mixture of the above elements
with explicit recursion and manipulation of arguments. In this paper
we present a mechanism that allows programmers to convert classic
point-wise code into point-free style, and a Haskell library that
enables the direct execution of the resulting code. Together, they
make possible the use of point-free either as a direct programming
style or as a domain into which programs can be transformed before
being subject to further manipulation