scenegraph-0.1: src/Graphics/SceneGraph/MySTM.hs
{-# LANGUAGE MultiParamTypeClasses, FunctionalDependencies,
TypeSynonymInstances, TypeOperators #-}
{--
At some point I was going to use STM. Rather than change the code back, just use the
primitive mappings to MVar.
--}
module Graphics.SceneGraph.MySTM where
import Data.IORef
import Control.Concurrent.MVar
type STM a = IO a
atomically :: MVar Bool -> STM a -> IO a
atomically sem f = withMVar sem (\_ -> f)
unsafeIOToSTM :: IO a -> STM a
unsafeIOToSTM = id
type TVar a = IORef a
readTVar :: TVar a -> STM a
readTVar = readIORef
writeTVar :: TVar a -> a -> STM ()
writeTVar = writeIORef
newTVar :: a -> STM (TVar a)
newTVar = newIORef