| Safe Haskell | Trustworthy |
|---|---|
| Language | Haskell2010 |
Control.Concurrent.Unique
Description
An abstract interface to a concurrent unique symbol generator.
Unlike Data.Unique from base the values are not a member of Ord. However, there is no global bottleneck.
Documentation
Unique identifiers are created by creating heap objects in kind # that can be compared for value equality and then hashing them using their initial allocation address.
>>>x <- newUnique>>>y <- newUnique>>>z <- newUnique
>>>[x == x, y == y, z == z][True,True,True]
>>>[x == y, y == z, z == x][False,False,False]
The hashes could be same, in theory, but in practice they are different as well.
>>>[ hash x == hash x, hash y == hash y, hash z == hash z][True,True,True]
>>>[ hash x == hash y, hash y == hash z, hash z == hash x][False,False,False]