This module contains a HashTable typeclass for the hash table
implementations in this package. This allows you to provide functions which
will work for any hash table implementation in this collection.

It is recommended to create a concrete type alias in your code when using this
package, i.e.:

Firstly, this makes it easy to switch to a different hash table
implementation, and secondly, using a concrete type rather than leaving your
functions abstract in the HashTable class should allow GHC to optimize
away the typeclass dictionaries.

Note that the functions in this typeclass are in the ST monad; if you want
hash tables in IO, use the convenience wrappers in Data.HashTable.IO.