This function creates a new hash table with the given test and hash functions. If the test function and hash function are chosen from a particular set of common pairs, then a specialized class of hash table may be returned.
The test-fn is a function of two arguments which will be used to test if two keys are equal. The first argument will always be a key already in the table, and the second argument will be a key being sought. The function should return #f if and only if the keys are not equal. As usual, returning anything else is considered to indicate that the keys are equal.
The hash-fn is a procedure of one argument which is used to compute a hash code from a key. The return value of the procedure must be a <fixnum>. As usual for hashing techniques, the hash-fn must return an identical value for keys that are equal according to the test-fn. Also as usual, the efficiency of a particular table depends on the even distribution in number space of the hash codes for the keys in the table.
This function will detect certain special cases and return an appropriate specialized subclass of <hash-table>, so whenever appropriate for the application, one of the following combinations should be used: