logicst-0.1.0.0: src/Data/STRef/Logic.hs
{-# LANGUAGE CPP #-}
module Data.STRef.Logic
( STRef
, newSTRef
, readSTRef
, writeSTRef
, modifySTRef
, modifySTRef'
) where
#ifdef MODULE_Control_Monad_ST_Safe
import Control.Monad.ST.Safe
#else
import Control.Monad.ST
#endif
import Control.Monad.ST.Logic
import Control.Monad.ST.Logic.Internal
type STRef s = Ref s (ST s)
newSTRef :: a -> LogicST s (STRef s a)
newSTRef = newRef
{-# INLINE newSTRef #-}
readSTRef :: STRef s a -> LogicST s a
readSTRef = readRef
{-# INLINE readSTRef #-}
writeSTRef :: STRef s a -> a -> LogicST s ()
writeSTRef = writeRef
{-# INLINE writeSTRef #-}
modifySTRef :: STRef s a -> (a -> a) -> LogicST s ()
modifySTRef = modifyRef
{-# INLINE modifySTRef #-}
modifySTRef' :: STRef s a -> (a -> a) -> LogicST s ()
modifySTRef' = modifyRef'
{-# INLINE modifySTRef' #-}