úÎ]  Test helper Exposed for unit testing  declareIORef name val maps a variable name to an  *. Calling it multiple times with the same  name and type of val will always return the same  .    someVar :: IORef Int  someVar = declareMVar "my-global-some-var" 0 Note, there is no need to use   or to add a {-# NOINLINE someVar #-} % pragma in order to define top-level  s. The identifying name The initial value of the  , it may or may not be used.  A unique   determined by (name, typeOf val). Whether it refers 3 to the given initial value or not is unspecified. declareMVar name val maps a variable name to an  *. Calling it multiple times with the same  name and type of val will always return the same  .    someVar :: MVar Int  someVar = declareMVar "my-global-some-var" 0 Note, there is no need to use   or to add a {-# NOINLINE someVar #-} % pragma in order to define top-level  s. The identifying name The initial value of the  , it may or may not be used.  A unique   determined by (name, typeOf val). Whether it refers to 0 the given initial value or not is unspecified. declareTVar name val maps a variable name to an  *. Calling it multiple times with the same  name and type of val will always return the same  .    someVar :: TVar Int  someVar = declareMVar "my-global-some-var" 0 Note, there is no need to use   or to add a {-# NOINLINE someVar #-} % pragma in order to define top-level  s. The identifying name The initial value of the  , it may or may not be used.  A unique   determined by (name, typeOf val). Whether it refers to 0 the given initial value or not is unspecified.        global-variables-1.0 Data.GlobalData.Global.Registry declareIORef declareMVar declareTVarRegistry setupRegistryglobalRegistrylookupOrInsertlookupOrInsertIOReflookupOrInsertMVarlookupOrInsertTVarbase GHC.IORefIORefGHC.IOunsafePerformIOGHC.MVarMVar GHC.Conc.SyncTVar