John Meacham wrote:

would it be possible to provide an Ord instance for (IORef a)? For
things like loop detection, one may need to make many IORef comparasions
and being able to use an efficient set would be a really big win.

Since IORefs are created in the IO monad, the actual order can be
arbitrary without breaking referential transparency (as long as it
doesn't change over the lifetime of the IORef.)
       John


Someone posted an 'inside out' solution to this a while ago, but I'm having trouble finding it in the mail archives.


It was along these lines:

   type CollectionOfIoRef = Int
   newtype IoRef a = IoRef (IORef (a, Array CollectionOfIoRef Bool))

You use this wrapper, IoRef, instead of IORef. To insert a reference into a collection, you add the *collection* to the IoRef's hidden set.

Regards,
Tom


_______________________________________________ Haskell-Cafe mailing list [EMAIL PROTECTED] http://www.haskell.org/mailman/listinfo/haskell-cafe

Reply via email to