[Haskell-cafe] Top-level TVars

Simon Marlow simonmar at microsoft.com
Thu Dec 15 04:21:58 EST 2005

On 14 December 2005 20:39, Joel Reymont wrote:

>> On Wed, Dec 14, 2005 at 02:17:17PM -0000, Simon Marlow wrote:
>>> Suppose you create two top-level IORefs with the same type, like
>>> this: 
>>>   var1 = unsafePerformIO $ newIORef 0
>>>   var2 = unsafePerformIO $ newIORef 0
>>> GHC's CSE optimisation will common these up - after all, it's the
>>> same expression, so it must yield the same result, right?
> Do these have to be within the same module for the CSE optimization
> to kick in?

Right now, yes.  But there's no guarantee that GHC might not get
cleverer in the future.

We're skating on really thin ice here.  I'm not particularly keen on
re-opening the discussion about top-level IO, but we do need *something*


More information about the Haskell-Cafe mailing list