The pqueue-mtl package

Contains several implementations of data structures implementing a single-in, single-out paradigm, and implements monad transformers for their safe use. The monad transformer part of the library includes tools to fully encapsulate single-threaded use of a priority queue in a monad, including an array-based heap implementation.