[Haskell-cafe] Top-level TVars

Simon Marlow simonmar at microsoft.com
Wed Dec 14 05:03:42 EST 2005


On 14 December 2005 09:57, Tomasz Zielonka wrote:

> On Wed, Dec 14, 2005 at 09:51:16AM -0000, Simon Marlow wrote:
>>> Here is an example how you can initialize a top-level STM variable.
>>>     http://www.uncurry.com/repos/TimeVar/TimeVar.hs
>>> It just forks a new thread inside unsafePerformIO, it runs
>>> "atomically" in it and passes the result through ordinary MVar.
>> 
>> A cheaper way is just to seq the top-level TVar at the beginning of
>> Main.main.
> 
> Yes, I tried that approach. However, imagine telling users of
> your library to do that in every program (withSocketsDo comes
> to mind).

Well sure, but it's only a temporary problem.  And you also have to tell
them to use {-# NOINLINE #-} and -fno-cse :-)

Cheers,
	Simon


More information about the Haskell-Cafe mailing list