Don't like ads? PRO users don't see any ads ;-)
Guest

Untitled

By: a guest on Jun 10th, 2012  |  syntax: None  |  size: 0.75 KB  |  hits: 21  |  expires: Never
download  |  raw  |  embed  |  report abuse  |  print
Text below is selected. Please press Ctrl+C to copy to your clipboard. (⌘+C on Mac)
  1. Global variables via unsafePerformIO in Haskell
  2. ghcInitialised :: MVar (Bool,[String])
  3. ghcInitialised = unsafePerformIO $ newMVar (False,[])
  4.        
  5. (init,flags) <- readMVar ghcInitialised
  6. when (not init) $ do
  7.    ...
  8.    (_,_,staticFlagWarnings) <- parseStaticFlags ...
  9.    ...
  10.    putMVar ghcInitialised (True,staticFlagWarnings)
  11.        
  12. {-# NOINLINE ghcInitialised #-}
  13. ghcInitialised :: MVar (Bool,[String])
  14. ghcInitialised = unsafePerformIO $ newMVar (False,[])
  15.        
  16. (init,flags) <- takeMVar ghcInitialised
  17. when (not init) $ do
  18.    ...
  19.    (_,_,staticFlagWarnings) <- parseStaticFlags ...
  20.    ...
  21.    putMVar ghcInitialised (True,staticFlagWarnings)
  22.        
  23. {-# NOINLINE ghcInitialised #-}
  24. ghcInitialised :: MVar (Bool,[String])
  25. ghcInitialised = unsafePerformIO $ newMVar (False,[])