[Haskell-cafe] fast graph algorithms without object identities
Jan-Willem Maessen
jmaessen at alum.mit.edu
Fri Feb 1 11:28:12 EST 2008
On Feb 1, 2008, at 9:41 AM, Alfonso Acosta wrote:
> You'd probably be interested to read
> http://www.cs.chalmers.se/~koen/pubs/entry-asian99-lava.html
It is indeed an interesting paper (that I've read and referred to
several times over the years). But it's tricky to get right in
practice! And sadly, while it solves the problem of sharing (or
object equivalence) it doesn't give us some sort of total order or
hash key, so there's no way to efficiently associate transient mutable
state uniquely with each reference we encounter. For that we need one
of the other solutions discussed and rejected. This is why
Data.Unique provides a pure hashUnique function.
The best option I know of here to get the desired time bounds with a
purely-functional abstraction is to use a splittable supply of unique
labels (which can be encapsulated in a monad if we like), then use ST
to associate a hash table of references with the graph nodes while
traversing the graph.
-Jan
More information about the Haskell-Cafe
mailing list