-- Hoogle documentation, generated by Haddock -- See Hoogle, http://www.haskell.org/hoogle/ -- | Fully concurrent unique identifiers -- -- Fully concurrent unique identifiers. @package unique @version 0.0.1 -- | 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. module Control.Concurrent.Unique -- | 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] --data Unique -- | Allocate a new Unique value. The value returned will not -- compare equal to any other value of type Unique returned by -- previous calls to newUnique. There is no limit on the number of -- times newUnique may be called. newUnique :: IO Unique instance GHC.Classes.Eq Control.Concurrent.Unique.Unique instance Data.Hashable.Class.Hashable Control.Concurrent.Unique.Unique