Proposal: Add the unordered-containers package and the hashable package to the Haskell Platform
Isaac Dupree
ml at isaac.cedarswampstudios.org
Fri Mar 22 15:40:16 CET 2013
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
More information about the Libraries
mailing list