[Haskell-cafe] Equivalent of withForeignPtr for System.Mem.Weak?
Antoine Latter
aslatter at gmail.com
Sun Oct 31 23:34:12 EDT 2010
On Sun, Oct 31, 2010 at 10:14 PM, Matthew Steele <mdsteele at alum.mit.edu> wrote:
> I have an object to which I have added one or more finalizers via
> addFinalizer from System.Mem.Weak. I would like to have a function that
> allows me to make use of the object within a block of IO code, and guarantee
> that the finalizer(s) will not be called during the code block -- sort of
> like withForeignPtr, but for arbitrary objects. Does such a function exist,
> and if not, how could I write one?
>
> I can imagine writing something like:
>
> \begin{code}
> withObject :: a -> IO b -> IO b
> withObject obj action = do
> result <- action
> touchObject obj -- touchObject :: a -> IO ()
> return result
> \end{code}
>
CC'ing GHC-users list.
The 'primitive' package has a general purpose 'touch' function:
http://hackage.haskell.org/packages/archive/primitive/0.3.1/doc/html/Control-Monad-Primitive.html#v:touch
But it doesn't state what guarantees are provided by the function.
Antoine
More information about the Haskell-Cafe
mailing list