{-# LANGUAGE Safe #-}------------------------------------------------------------------------------- |-- Module : Data.STRef.Lazy-- Copyright : (c) The University of Glasgow 2001-- License : BSD-style (see the file libraries/base/LICENSE)---- Maintainer : libraries@haskell.org-- Stability : stable-- Portability : non-portable (uses Control.Monad.ST.Lazy)---- Mutable references in the lazy ST monad.-------------------------------------------------------------------------------moduleData.STRef.Lazy (-- * STRefsST.STRef ,-- abstractnewSTRef ,readSTRef ,writeSTRef ,modifySTRef )whereimportPrelude importGHC.Internal.Control.Monad.ST.Lazy importqualifiedGHC.Internal.Data.STRef asSTnewSTRef ::a ->ST s (ST.STRef s a )readSTRef ::ST.STRef s a ->ST s a writeSTRef ::ST.STRef s a ->a ->ST s ()modifySTRef ::ST.STRef s a ->(a ->a )->ST s ()newSTRef :: forall a s. a -> ST s (STRef s a) newSTRef =ST s (STRef s a) -> ST s (STRef s a) forall s a. ST s a -> ST s a strictToLazyST (ST s (STRef s a) -> ST s (STRef s a)) -> (a -> ST s (STRef s a)) -> a -> ST s (STRef s a) forall b c a. (b -> c) -> (a -> b) -> a -> c . a -> ST s (STRef s a) forall a s. a -> ST s (STRef s a) ST.newSTRef readSTRef :: forall s a. STRef s a -> ST s a readSTRef =ST s a -> ST s a forall s a. ST s a -> ST s a strictToLazyST (ST s a -> ST s a) -> (STRef s a -> ST s a) -> STRef s a -> ST s a forall b c a. (b -> c) -> (a -> b) -> a -> c . STRef s a -> ST s a forall s a. STRef s a -> ST s a ST.readSTRef writeSTRef :: forall s a. STRef s a -> a -> ST s () writeSTRef STRef s a r a a =ST s () -> ST s () forall s a. ST s a -> ST s a strictToLazyST (STRef s a -> a -> ST s () forall s a. STRef s a -> a -> ST s () ST.writeSTRef STRef s a r a a )modifySTRef :: forall s a. STRef s a -> (a -> a) -> ST s () modifySTRef STRef s a r a -> a f =ST s () -> ST s () forall s a. ST s a -> ST s a strictToLazyST (STRef s a -> (a -> a) -> ST s () forall s a. STRef s a -> (a -> a) -> ST s () ST.modifySTRef STRef s a r a -> a f )