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: