module Control.Concurrent.MVar.WriteOnly 
( WriteOnlyMVar
, ofMVar
, putMVar
, tryPutMVar
) where

import qualified Control.Concurrent.MVar as MVar
import Control.Concurrent.MVar (MVar)

newtype WriteOnlyMVar a = WriteOnlyMVar (MVar a)
    deriving Eq

ofMVar :: MVar a -> WriteOnlyMVar a
ofMVar = WriteOnlyMVar

putMVar :: WriteOnlyMVar a -> a -> IO ()
putMVar (WriteOnlyMVar var) =
  MVar.putMVar var

tryPutMVar :: WriteOnlyMVar a -> a -> IO Bool
tryPutMVar (WriteOnlyMVar var) =
  MVar.tryPutMVar var