[Haskell-cafe] Re: Top Level <-

Ganesh Sittampalam ganesh at earth.li
Sun Sep 7 06:23:18 EDT 2008


On Sat, 6 Sep 2008, Ashley Yakeley wrote:

> Ganesh Sittampalam wrote:
>>>> The set of ACIO expressions exp is the "static initialisers" of M. The 
>>>> RTS must note when each static initialiser is run, and cache its result 
>>>> val. Let's call this cache of vals the "static results cache" of M.
>>>> 
>>>> When M is loaded, and a static results cache for M already exists, then 
>>>> it will be used for the vals of M.
>>> 
>>> This sounds "reachable" to me, and therefore static overhead and not a 
>>> leak.
>> 
>> You can call it what you like, but it's still unacceptable behaviour, 
>> particularly since clients of M will have no way of telling from its 
>> API that it will happen.
>
> That what will happen?

That memory will be used and not ever be reclaimable.

Suppose I am writing something that I intend to be used as part of a 
plug-in that is reloaded in different forms again and again. And I see 
module K which does something I want, so I use it. It so happens that K 
uses M, which has a <-. If I knew that using K in my plug-in would cause a 
memory leak, I would avoid doing so; but since the whole point of <- is to 
avoid making the need for some state visible in the API.

Ganesh


More information about the Haskell-Cafe mailing list