[Haskell-cafe] How to obtain unique integers

Thomas Schilling nominolo at googlemail.com
Fri Mar 5 16:36:49 EST 2010

The value-supply package [1] provides means to generate unique values
of any kind.  It uses IORefs under the hood, but provides a pure
interface for it (an infinite tree).  Because of this, you need to be
a bit careful how you construct your supply when using multiple
threads.  The same techniques are used in GHC as well (for better or

Note that the IDs you get are essentially non-deterministic -- they
rely on evaluation order.

I'm not sure why you need these uniques in the Show instances, though.
 Can't you just store the IDs with your data?

[1]: http://hackage.haskell.org/package/value-supply

On 5 March 2010 12:14, Robert Rothenberg <robrwo at gmail.com> wrote:
> I'm implementing a variant of Prolog in Haskell (yes, I know others
> already exist...) and am looking to solve the following issues:
> (1) I need to translate anonymous variables "_" into unique variable
> names.  Data.Unique does not give me a printable identifier. Is there
> another package that does this?
> (2) Is there a cabal package similar to the Atom.hs module form ginsu,
> that associates strings with unique hashes?
> The alternative of course is to maintain state variables and pass them
> along to display and parsing functions, but that makes it difficult to
> make the terms instances of Read/Show without reference to a global
> variable anyhow.
> Thanks,
> Rob
> _______________________________________________
> Haskell-Cafe mailing list
> Haskell-Cafe at haskell.org
> http://www.haskell.org/mailman/listinfo/haskell-cafe

Push the envelope.  Watch it bend.

More information about the Haskell-Cafe mailing list