I want to build a hash table and then freeze it and use it for fast lookup later. Is there a way to build it in IO or ST but freeze it and use it in transparent code later? D
Hi Dennis, Data.HashMap [1] is my preferred way to do this, which avoids any mucking around in IO at all. If that doesn't work for you, funnily enough the function you're looking for may well be called `freeze` [2] [1] https://hackage.haskell.org/package/unordered-containers-0.2.7.2/docs/Data-H... [2] https://hackage.haskell.org/package/vector-0.12.0.0/docs/Data-Vector.html#v:... On 27 Jan 2017 05:18, "Dennis Raddle" <dennis.raddle@gmail.com> wrote: I want to build a hash table and then freeze it and use it for fast lookup later. Is there a way to build it in IO or ST but freeze it and use it in transparent code later? D _______________________________________________ Haskell-Cafe mailing list To (un)subscribe, modify options or view archives go to: http://mail.haskell.org/cgi-bin/mailman/listinfo/haskell-cafe Only members subscribed via the mailman list are allowed to post.
David Turner <dct25-561bs@mythic-beasts.com> writes:
Hi Dennis,
Data.HashMap [1] is my preferred way to do this, which avoids any mucking around in IO at all.
If that doesn't work for you, funnily enough the function you're looking for may well be called `freeze` [2]
[1] https://hackage.haskell.org/package/unordered-containers-0.2.7.2/docs/Data-H...
[2] https://hackage.haskell.org/package/vector-0.12.0.0/docs/Data-Vector.html#v:...
On 27 Jan 2017 05:18, "Dennis Raddle" <dennis.raddle@gmail.com> wrote:
I want to build a hash table and then freeze it and use it for fast lookup later. Is there a way to build it in IO or ST but freeze it and use it in transparent code later? D
I've actually wanted this type of operations a few times as well, but never really found a solution so far. The problem with just using Data.HashMap is that it does not guarantee the desired query times (although I'm guessing it would "work well in practice"). It would be awesome if there was some sort of cuckoo-hashing implementation that you could build in ST (in expected O(n) time or so), and then freeze as to get O(1) worst case (guaranteed) lookups in pure code. -- - Frank
On Fri, Jan 27, 2017 at 1:12 AM, Frank Staals <frank@fstaals.net> wrote:
It would be awesome if there was some sort of cuckoo-hashing implementation that you could build in ST (in expected O(n) time or so), and then freeze as to get O(1) worst case (guaranteed) lookups in pure code.
There is a version of cuckoo hashing in the hashtables <https://github.com/gregorycollins/hashtables> library that is in ST, but it doesn't do freeze, sorry. I decided not to add freeze -- it would have more than doubled the API footprint for very little benefit. G -- Gregory Collins <greg@gregorycollins.net>
participants (4)
-
David Turner -
Dennis Raddle -
Frank Staals -
Gregory Collins