diff options
| author | partain <unknown> | 1996-01-11 14:26:13 +0000 |
|---|---|---|
| committer | partain <unknown> | 1996-01-11 14:26:13 +0000 |
| commit | 10521d8418fd3a1cf32882718b5bd28992db36fd (patch) | |
| tree | 09cb781a215d1ab0c871f9655c1460207a601497 /ghc/lib/glaExts/PreludeGlaST.lhs | |
| parent | 7fa716e248a1f11fa686965f57aebbb83b74fa7b (diff) | |
| download | haskell-10521d8418fd3a1cf32882718b5bd28992db36fd.tar.gz | |
[project @ 1996-01-11 14:06:51 by partain]
Diffstat (limited to 'ghc/lib/glaExts/PreludeGlaST.lhs')
| -rw-r--r-- | ghc/lib/glaExts/PreludeGlaST.lhs | 20 |
1 files changed, 20 insertions, 0 deletions
diff --git a/ghc/lib/glaExts/PreludeGlaST.lhs b/ghc/lib/glaExts/PreludeGlaST.lhs index a4db1d2f24..75d4f45a25 100644 --- a/ghc/lib/glaExts/PreludeGlaST.lhs +++ b/ghc/lib/glaExts/PreludeGlaST.lhs @@ -705,8 +705,28 @@ readVar :: MutableVar s a -> _ST s a writeVar :: MutableVar s a -> a -> _ST s () sameVar :: MutableVar s a -> MutableVar s a -> Bool +{- MUCH GRATUITOUS INEFFICIENCY: WDP 95/09: + newVar init s = newArray (0,0) init s readVar v s = readArray v 0 s writeVar v val s = writeArray v 0 val s sameVar v1 v2 = sameMutableArray v1 v2 +-} + +newVar init (S# s#) + = case (newArray# 1# init s#) of { StateAndMutableArray# s2# arr# -> + (_MutableArray vAR_IXS arr#, S# s2#) } + where + vAR_IXS = error "Shouldn't access `bounds' of a MutableVar\n" + +readVar (_MutableArray _ var#) (S# s#) + = case readArray# var# 0# s# of { StateAndPtr# s2# r -> + (r, S# s2#) } + +writeVar (_MutableArray _ var#) val (S# s#) + = case writeArray# var# 0# val s# of { s2# -> + ((), S# s2#) } + +sameVar (_MutableArray _ var1#) (_MutableArray _ var2#) + = sameMutableArray# var1# var2# \end{code} |
