{-# LANGUAGE CPP, NoImplicitPrelude #-}
module Data.STRef.Compat (
module Base
, modifySTRef'
) where
import Data.STRef as Base
#if !(MIN_VERSION_base(4,6,0))
import Control.Monad.ST (ST)
import Prelude (seq)
-- | Strict version of 'modifySTRef'
--
-- /Since: 4.6.0.0/
modifySTRef' :: STRef s a -> (a -> a) -> ST s ()
modifySTRef' ref f = do
x <- readSTRef ref
let x' = f x
x' `seq` writeSTRef ref x'
#endif