Create and return a new hash table.
Arguments are specified as keyword/argument pairs. The following
arguments are defined:
:test TEST -- TEST must be a symbol that specifies how to compare
keys. Default is `eql'. Predefined are the tests `eq', `eql', and
`equal'. User-supplied test and hash functions can be specified via
:size SIZE -- A hint as to how many elements will be put in the table.
Default is 65.
:rehash-size REHASH-SIZE - Indicates how to expand the table when it
fills up. If REHASH-SIZE is an integer, increase the size by that
amount. If it is a float, it must be > 1.0, and the new size is the
old size multiplied by that factor. Default is 1.5.
:rehash-threshold THRESHOLD -- THRESHOLD must a float > 0, and <= 1.0.
Resize the hash table when the ratio (number of entries / table size)
is greater than or equal to THRESHOLD. Default is 0.8.
:weakness WEAK -- WEAK must be one of nil, t, `key', `value',
`key-or-value', or `key-and-value'. If WEAK is not nil, the table
returned is a weak table. Key/value pairs are removed from a weak
hash table when there are no non-weak references pointing to their
key, value, one of key or value, or both key and value, depending on WEAK. WEAK t is equivalent to `key-and-value'. Default value of WEAK is nil. (fn &rest KEYWORD-ARGS)