X-Git-Url: http://git.megacz.com/?a=blobdiff_plain;ds=sidebyside;f=Data%2FSTRef.hs;h=10853bea34caa8a0814820391435bf6356542721;hb=e2b0ce053030e6cb368edd32a7fd73d38d220180;hp=81b135173fff8343a54dab21b646ec0465a1fd75;hpb=86a17d42a36c3272e993854b9bfa2276ae669324;p=ghc-base.git diff --git a/Data/STRef.hs b/Data/STRef.hs index 81b1351..10853be 100644 --- a/Data/STRef.hs +++ b/Data/STRef.hs @@ -6,9 +6,9 @@ -- -- Maintainer : libraries@haskell.org -- Stability : experimental --- Portability : non-portable (requires non-portable module ST) +-- Portability : non-portable (uses Control.Monad.ST) -- --- Mutable references in the ST monad. +-- Mutable references in the (strict) ST monad. -- ----------------------------------------------------------------------------- @@ -24,10 +24,18 @@ module Data.STRef ( import Prelude #ifdef __GLASGOW_HASKELL__ +import GHC.ST import GHC.STRef #endif -import Data.Dynamic +#ifdef __HUGS__ +import Hugs.ST +import Data.Typeable -#include "Dynamic.h" +#include "Typeable.h" INSTANCE_TYPEABLE2(STRef,stRefTc,"STRef") +#endif + +-- |Mutate the contents of an 'STRef' +modifySTRef :: STRef s a -> (a -> a) -> ST s () +modifySTRef ref f = writeSTRef ref . f =<< readSTRef ref