Re: more default hash functions taylanbayirli@xxxxxx 16 Oct 2015 13:53 UTC

Alex Shinn <xxxxxx@gmail.com> writes:

> eq?/eqv? hash tables with rehashing on gc,
> as in larceny, may be doing more work than
> is needed for some common eq?/eqv? cases.
>
> If the keys are only symbols, it would be
> reasonable to store a hash value directly in
> the symbol object, or even arrange for all
> symbols to be stationary in the gc. To allow
> such optimizations, I think we should add:
>
> make-symbol-hash-table
>
> (which may just be the same as an eq table.)

I believe (make-hashtable symbol-hash eq?) should suffice?

> Similarly, a possibly rehashing eqv table is
> overkill for characters and numbers when we
> can just construct normal comparison-based
> hash tables using:
>
> char-hash
> number-hash
>
> One could also consider char-ci-hash, though
> case comparisons on single chars may be
> indicative of poor design.

I'm indifferent.  I think adding char-ci-hash, char-hash, and
number-hash would be neither very useful, nor harmful.

If it provides a nontrivial performance gain on Scheme implementations
with moving garbage collectors that rehash eq? and eqv? tables after
every GC, then why not.

Taylan