This paper investigates using a functional language with a sophisticated type system to implement data-intensive programs. We focus on how bulk data types can be represented rather than on the efficient implementation of those types.
The paper is intended more as a discussion document, recording some thoughts on how to represent bulk data in a functional language, than as a conclusive statement on functional databases. It also serves as a reasonably complex and hopefully realistic example of how some of the new features of Haskell 1.3, including constructor classes, can be exploited to good effect. The limitations of these features are also assessed.