Commit 90341ce4 authored by simonmar's avatar simonmar
Browse files

[project @ 2000-03-21 14:24:20 by simonmar]

MutableArray/STArray fixage.
parent db2acb83
......@@ -3,10 +3,10 @@
-- !!! multi-dimensional arrays
module Main ( main ) where
import GlaExts
import ST
import Array
type TwoD s = MutableArray s Int (MutableArray s Int Int)
type TwoD s = STArray s Int (STArray s Int Int)
setup :: ST s (TwoD s)
setup = let isz = 10
......@@ -16,10 +16,10 @@ setup = let isz = 10
do
-- gives : undefined reference to `IOBase_error_closure'
-- x <- newArray (0, omax) (error "uninitialised")
dmy <- newArray (0, imax) 0
x <- newArray (0, omax) dmy
as <- (sequence . replicate osz) (newArray (0, imax) 6)
mapM_ (\(i,v) -> writeArray x i v) (zip [0..omax] as)
dmy <- newSTArray (0, imax) 0
x <- newSTArray (0, omax) dmy
as <- (sequence . replicate osz) (newSTArray (0, imax) 6)
mapM_ (\(i,v) -> writeSTArray x i v) (zip [0..omax] as)
return x
main :: IO ()
......
......@@ -5,6 +5,7 @@ module Main ( main ) where
import PrelBase
import ST
import IOExts
import ST
import MutableArray
import ByteArray
import Addr
......@@ -204,18 +205,18 @@ test_ptrs
f size
= runST (
newArray (1, size) (3 % 5) >>= \ arr# ->
newSTArray (1, size) (3 % 5) >>= \ arr# ->
-- don't fill in the whole thing
fill_in arr# 1 400 >>
freezeArray arr#
freezeSTArray arr#
)
fill_in :: MutableArray s Int (Ratio Int) -> Int -> Int -> ST s ()
fill_in :: STArray s Int (Ratio Int) -> Int -> Int -> ST s ()
fill_in arr_in# first last
= if (first > last)
then return ()
else writeArray arr_in# first (fromInt (first * first)) >>
else writeSTArray arr_in# first (fromInt (first * first)) >>
fill_in arr_in# (first + 1) last
lookup_range :: Array Int (Ratio Int) -> Int -> Int -> [Ratio Int]
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment