{-# LANGUAGE TypeFamilies #-}
module Simulation.Aivika.Distributed.Optimistic.Ref.Base.Strict () where
import Simulation.Aivika.Trans.Internal.Types
import Simulation.Aivika.Trans.Comp
import Simulation.Aivika.Trans.Ref.Base.Strict
import Simulation.Aivika.Distributed.Optimistic.Internal.DIO
import qualified Simulation.Aivika.Distributed.Optimistic.Internal.Ref.Strict as R
instance MonadRef DIO where
newtype Ref DIO a = Ref { refValue :: R.Ref a }
{-# INLINE newRef #-}
newRef = fmap Ref . R.newRef
{-# INLINE readRef #-}
readRef (Ref r) = R.readRef r
{-# INLINE writeRef #-}
writeRef (Ref r) = R.writeRef r
{-# INLINE modifyRef #-}
modifyRef (Ref r) = R.modifyRef r
{-# INLINE equalRef #-}
equalRef (Ref r1) (Ref r2) = (r1 == r2)
instance MonadRef0 DIO where
{-# INLINE newRef0 #-}
newRef0 = fmap Ref . R.newRef0