module Control.Concurrent.MVar.WriteOnly ( WriteOnlyMVar , toWriteOnlyMVar , putMVar , tryPutMVar ) where import Control.Concurrent.MVar.Lifted (MVar) import qualified Control.Concurrent.MVar.Lifted as MVar import Control.Monad.Base newtype WriteOnlyMVar a = WriteOnlyMVar (MVar a) deriving Eq toWriteOnlyMVar :: MVar a -> WriteOnlyMVar a toWriteOnlyMVar = WriteOnlyMVar putMVar :: MonadBase IO m => WriteOnlyMVar a -> a -> m () putMVar (WriteOnlyMVar var) = MVar.putMVar var tryPutMVar :: MonadBase IO m => WriteOnlyMVar a -> a -> m Bool tryPutMVar (WriteOnlyMVar var) = MVar.tryPutMVar var