{-# LANGUAGE ExistentialQuantification #-}

module Data.IPCVar.Backend where

import Data.Binary

data IPCVarBackend a = Binary a => IPCVarBackend
    { readValue   :: IO a
    , writeValue  :: a -> IO ()
    , swapValue   :: a -> IO a
    , deleteValue :: IO ()
    }

newtype IPCVar a = IPCVar { getIPCBackend :: IPCVarBackend a }