RFC: Adding a Hashable type class and HashMap/HashSet data types to HP
Malcolm Wallace
malcolm.wallace at me.com
Thu Dec 2 09:40:55 CET 2010
On 26 Nov 2010, at 23:14, Johan Tibell wrote:
> On Fri, Nov 26, 2010 at 8:35 PM, Bryan O'Sullivan
> <bos at serpentine.com> wrote:
>> I think so. The purpose of having the Hashable typeclass is so that
>> the
>> universe of typed values that we can hash is open.
>
> I don't disagree that being able to hash everything is nice, but I
> don't think it's crucial. My main interest in having a Hashable type
> class is so we can have containers that can be keyed by hashable
> things, for the types where this make sense (e.g. string like types
> where comparison is expensive.) If all that a Hashable type class
> would give me is the ability to store ByteStrings and Texts in a
> HashMap, that alone would be enough motivation for having one in my
> opinion.
I am probably showing my ignorance here, but I am puzzled as to how a
hash value of type Word32 helps anyone. When I learnt CS a long time
ago (and I even implemented a Hashable class for Haskell in the early
1990s), a hash value was always used as the index into a constant-time
lookup table. I certainly don't want tables of size 2^32 in any
programs I write, even if I do have 12G of memory in my machine.
Way back when, my Hashable method needed to know what size of table
you wanted in order to generate the hash. Of course, you could resize
tables upwards if required too.
So I'm imagining you have a different idea in mind for how to store a
HashMap? Will it be a rebalancing tree structure, using the ordering
on Hashes as keys? This changes the computational complexity of both
storage and lookup, and I begin to wonder whether you will gain any
performance ultimately.
Regards,
Malcolm
More information about the Libraries
mailing list