[Haskell-cafe] Pure hashtable library

Jan-Willem Maessen jmaessen at alum.mit.edu
Wed Aug 27 08:06:11 EDT 2008


On Aug 27, 2008, at 3:41 AM, Bulat Ziganshin wrote:

> Hello haskell-cafe,
>
> solving one more task that uses English dictionary, i've thought:  
> why we don't yet have pure hashtable library? There is imperative  
> hashtables, pretty complex as they need to rebuild entire table as  
> it grows. There is also simple assoc lists and tree/trie  
> implementations, but there is no simple non-modifiable hashes.

I know that Lennart had such a hashtable implementation as part of the  
hbcc source tree (so dating back to the late stream age or the very  
very early monad age), though I think it relied upon hbc's LazyArray.

One obvious way to make non-modifiable hash tables useful is to "eat  
your own tail" non-strictly--- aggregate a set of hash table entries,  
construct a hash table from them, and plumb the resulting hash table  
into the original computation by tying the knot.  This works really  
well if you can construct the bucket lists lazily and if you specify  
the table size up front.  You can't make this trick work at all for  
tree-based maps in general, because the structure of the tree depends  
upon all the keys inserted.  You also can't make this trick work if  
you base the size of the hash table on the number of keys inserted,  
maximum bucket load, etc.  Finally, it doesn't work with strict arrays  
at all.

So a nice niche for a small and clever static hash table.

-Jan



More information about the Haskell-Cafe mailing list