[Haskell-cafe] IORef memory leak

Luke Palmer lrpalmer at gmail.com
Fri Jun 19 00:45:52 EDT 2009


On Thu, Jun 18, 2009 at 9:55 PM, Ross Mellgren <rmm-haskell at z.odi.ac> wrote:

> It looks offhand like you're not being strict enough when you put things
> back in the IORef, and so it's building up thunks of (+1)...
>
> With two slight mods:
>
>   go 0 = return ()
>   go n = do modifyIORef ior (+1)
>             go (n-1)
>
> -->
>
>   go 0 = return ()
>   go n = do modifyIORef ior (\ x -> let x' = x+1 in x `seq` x')
>             go (n-1)


Just a slight prettification of that line:

modifyIORef ior ((1+) $!)

Or applied prefix if you prefer.  Prefix ($!) has the nice interpretation as
the HOF that makes its argument into a strict function.

Luke
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://www.haskell.org/pipermail/haskell-cafe/attachments/20090619/b6f81f85/attachment.html


More information about the Haskell-Cafe mailing list