Bulk types – such as lists, bags, ets, finite maps, and priority queues – are ubiquitous in programming. Yet many languages don’t support them well, even though they have received a great deeal of attention, especially from the database community. Haskell is currently among the culprits.

This paper has two aims: to identify some of the technical difficulties, and to attempt to address them using Haskell’s constructor classes.