Feedback request: priority queues in containers

kahl at kahl at
Tue Mar 16 13:24:32 EDT 2010

Louis Wasserman wrote:
 > I'm not willing to do this sort of typeclass wrapper thing, primarily
 > because nothing else in containers does -- even though we might have a
 > Mapping type class that handles both IntMap and Map, we don't.
 > I'm inclined to let that design choice stand, as far as containers is
 > concerned.  It would make perfect sense to write a new package with such a
 > type class and offering instances for the containers priority queue
 > implementations, but I prefer to stick with the style that containers
 > already seems to use -- that is, exporting separate modules without a
 > unifying type class, but with nearly-identical method signatures.

Just an aside (and shameless plug ;-): Since the signatures overlap so much,
it is in fact easy to wrap these modules into instances
for many possible different type classes that one might consider using for
containers --- I have a tool that mechanises this instance generation,
available at:

More about this in the forthcoming TFP 2009 proceedings paper:

  author =       {Wolfram Kahl},
  title =        {Haskell Module Tools for Liberating Type Class Design},
  crossref =  {TFP2009},
  pages =     {129--144},
  chapter = {9},
  abstract =    {Design of Haskell type class hierarchies for complex purposes,
                 including for standard containers, is a non-trivial exercise,
                 and evolution of such designs
                 is additionally hampered by the large overhead
                 of connecting to existing implementations.

                 We systematically discuss this overhead,
                 and propose a tool solution, implemented using the GHC API,
                 to automate its generation.}

  title =     {Trends in Functional Programming, {TFP 2009}},
  booktitle = {Trends in Functional Programming, {TFP 2009}},
  year =      2010,
  editor =    {Zolt\'an Horv{\'a}th and Vikt\'oia Zs{\'o}k and Peter Achten and Pieter Koopman},
  address =   {UK},
  publisher = {Intellect},
  note = {(In press)}


More information about the Glasgow-haskell-users mailing list