On 03/21/2013 05:32 PM, Johan Tibell wrote:
I think the contract should be: the hash function is guaranteed to
return the same hash code for a given value as long as the code is
compiled with the same version of hashable, unless the user explicit
turns on hash randomization (i.e. random seed read from /dev/urandom). I
don't think we should make any guarantees that a new version of hashable
won't change the hash function used.

That sounds like the right contract for a hashtable hashing function to have.

As for word sizes the only practical thing is to use the native word
size, as anything else is much too slow (i.e. Int64 is terribly slow on
32-bit platforms).

Yeah. And Int32/Word32 hashes don't work for containers with more than 2^32 items. Alright.

If you're persisting your hashes you
should use a hash function that guarantees exactly which algorithm is used.

Yep. But it won't/can't use this Hashable API (e.g. via newtype CrossPlatformDeterministicallySipHashed), because of the variable word size. I accept this.

-Isaac


_______________________________________________
Haskell-platform mailing list
Haskell-platform@projects.haskell.org
http://projects.haskell.org/cgi-bin/mailman/listinfo/haskell-platform

Reply via email to