[Haskell-cafe] Re: Efficient or predictable Ord for Typeable
George Russell
ger at informatik.uni-bremen.de
Tue Nov 30 08:13:01 EST 2004
(me)
> I suggest you implement
>
> hashTypeable :: Typeable -> IO Int32
>
Lennart wrote (snipped)
> And/or
> mkHashTypeable :: IO (Typeable -> Int32)
Although this is OK, a general hash function might well need
to return IO HashKey.
A while back, before Data.Unique, I implemented a Unique module
with interface:
newUnique :: IO Unique
uniqCompare :: Unique -> Unique -> IO Ordering
The values returned by uniqCompare are guaranteed to be consistent.
This implementation (which was not meant terribly seriously) was
unusual because it did not use unsafePerformIO or any other global
state, though it did need MVars and access to the current thread
identifier (if in a concurrent world). The ordering was constructed
dynamically as you called uniqCompare. The source is here:
http://www.mail-archive.com/glasgow-haskell-users@haskell.org/msg01109/Unique.hs
Converting the function to be of type
getUniqCompare :: IO (Unique -> Unique -> Ordering)
would be impossible. I suspect there may be other cases where you
dynamically construct a hash function.
More information about the Haskell-Cafe
mailing list