module Control.Concurrent.STM.TVar.Class where

import Control.Concurrent.STM (STM)
import qualified Control.Concurrent.STM.TVar as TVar

class TVarWrite var where
    writeTVar :: var a -> a -> STM ()

instance TVarWrite TVar.TVar where
    writeTVar = TVar.writeTVar
    {-# INLINE writeTVar #-}

class TVarRead var where
    readTVar :: var a -> STM a

instance TVarRead TVar.TVar where
    readTVar = TVar.readTVar
    {-# INLINE readTVar #-}