module Data.IORef.Logic
( IORef
, newIORef
, readIORef
, writeIORef
, modifyIORef
, modifyIORef'
) where
import Control.Monad.IO.Logic
import Control.Monad.ST.Logic.Internal
type IORef s = Ref s IO
newIORef :: a -> LogicIO s (IORef s a)
newIORef = newRef
readIORef :: IORef s a -> LogicIO s a
readIORef = readRef
writeIORef :: IORef s a -> a -> LogicIO s ()
writeIORef = writeRef
modifyIORef :: IORef s a -> (a -> a) -> LogicIO s ()
modifyIORef = modifyRef
modifyIORef' :: IORef s a -> (a -> a) -> LogicIO s ()
modifyIORef' = modifyRef'