[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