X-Git-Url: http://git.megacz.com/?a=blobdiff_plain;f=ghc%2Flib%2FglaExts%2FST.lhs;fp=ghc%2Flib%2FglaExts%2FST.lhs;h=6c0efbae220424b54375f86fdd88db3369293da4;hb=6a515e8907437ffe632b4e440063075e3325c4e8;hp=ed3474df9ef71fc74bb3fdcf37de99abc413e6f0;hpb=9371efc106cba136266afa459bf58f716162a29e;p=ghc-hetmet.git diff --git a/ghc/lib/glaExts/ST.lhs b/ghc/lib/glaExts/ST.lhs index ed3474d..6c0efba 100644 --- a/ghc/lib/glaExts/ST.lhs +++ b/ghc/lib/glaExts/ST.lhs @@ -42,7 +42,8 @@ import Ix %********************************************************* \begin{code} -newtype STRef s a = STRef (MutableVar s a) deriving Eq +newtype STRef s a = STRef (MutableVar s a) + deriving Eq newSTRef :: a -> ST s (STRef s a) newSTRef v = newVar v >>= \ var -> return (STRef var) @@ -61,7 +62,8 @@ writeSTRef (STRef var) v = writeVar var v %********************************************************* \begin{code} -type STArray s ix elt = MutableArray s ix elt +newtype STArray s ix elt = STArray (MutableArray s ix elt) + deriving Eq newSTArray :: Ix ix => (ix,ix) -> elt -> ST s (STArray s ix elt) writeSTArray :: Ix ix => STArray s ix elt -> ix -> elt -> ST s () @@ -71,12 +73,20 @@ thawSTArray :: Ix ix => Array ix elt -> ST s (STArray s ix elt) freezeSTArray :: Ix ix => STArray s ix elt -> ST s (Array ix elt) unsafeFreezeSTArray :: Ix ix => STArray s ix elt -> ST s (Array ix elt) -newSTArray = newArray -boundsSTArray = boundsOfArray -readSTArray = readArray -writeSTArray = writeArray -thawSTArray = thawArray -freezeSTArray = freezeArray -unsafeFreezeSTArray = unsafeFreezeArray +newSTArray ixs elt = + newArray ixs elt >>= \arr -> + return (STArray arr) + +boundsSTArray (STArray arr) = boundsOfArray arr + +readSTArray (STArray arr) ix = readArray arr ix + +writeSTArray (STArray arr) ix elt = writeArray arr ix elt + +thawSTArray arr = thawArray arr >>= \starr -> return (STArray starr) + +freezeSTArray (STArray arr) = freezeArray arr + +unsafeFreezeSTArray (STArray arr) = unsafeFreezeArray arr \end{code} - +