module type HashedType = sig .. end
type t 
The type of the hashtable keys.
val equal : t -> t -> bool
The equality predicate used to compare keys.
val hash : t -> int
A hashing function on keys. It must be such that if two keys are
          equal according to 
equal, then they have identical hash values
          as computed by 
hash.
          Examples: suitable (
equal, 
hash) pairs for arbitrary key
          types include
-         (
(=), Hashtbl.hash) for comparing objects by structure
              (provided objects do not contain floats) 
-         (
(fun x y -> compare x y = 0), Hashtbl.hash)
              for comparing objects by structure
              and handling nan correctly 
-         (
(==), Hashtbl.hash) for comparing objects by physical
              equality (e.g. for mutable or cyclic objects).