Abstract hash table keys. This is the argument signature for the hash table functor.

signature HASH_KEY =
  sig
    type hash_key

    val hashVal : hash_key -> word
        (* Compute an unsigned integer key from a hash key. *)

    val sameKey : (hash_key * hash_key) -> bool
        (* Return true if two keys are the same.
         * NOTE: if sameKey(h1, h2), then it must be the
         * case that (hashVal h1 = hashVal h2).
         *)

  end (* HASH_KEY *)