[Haskell-cafe] IORefs and weak pointers

Patai Gergely patai_gergely at fastmail.fm
Mon Nov 2 12:48:47 EST 2009


Hello all,

I wanted to create a weak pointer with an IORef as the key and something
else as the value, but I saw no way to do it through the API provided.
After some experimentation I came up with the following abomination for
a solution:

myWeakRef (IORef (STRef r)) v f =
  IO $ \s -> case mkWeak# r v f s of (# s', w #) -> (# s', Weak w #)

This works perfectly when the code is compiled both with and without
optimisations, but ghci chokes on it with an internal error. So my
question is if I can expect this to work at least this much in the long
run, or is it a hopelessly fragile hack?

Gergely

-- 
http://www.fastmail.fm - Same, same, but different...



More information about the Haskell-Cafe mailing list