Hello, café:

I am trying to use more than one array with runSTUArray but I don't seem
to be able to understand how it works. My first try is this:

test1 n = runSTUArray $ do
             a <- newArray (1, n) (2::Int)
             b <- newArray (1, n) (3::Int)
             forM_ [1..n] $ \i -> do
               v <- readArray a i
               writeArray b i (v+1)
             return b

but it does not work. However, when I write

test2 n = runSTUArray $ do
             let createArray v n = newArray (1, n) (v::Int)
             a <- createArray 2 n
             b <- createArray 0 n
             forM_ [1..n] $ \i -> do
               v <- readArray a i
               writeArray b i (v+1)
             return b

everything is fine although I expected the two versions to be
equivalent. To further complicate matters, the following

createArray v n = newArray (1, n) (v::Int)

test3 n = runSTUArray $ do
             a <- createArray 2 n
             b <- createArray 3 n
             forM_ [1..n] $ \i -> do
               v <- readArray a i
               writeArray b i (v+1)
             return b

does not work either. Where can I find an explanation for this
behaviour? Furthermore, what I am after is to use two arrays with
different types (Int and Bool), is it possible?

  Thanks in advance,

  Juan Miguel

--
Juan Miguel Vilar Torres
Profesor titular de universidad
Vicedirector de la ESTCE para ITIG e ITIS
Departamento de Lenguajes y Sistemas Informáticos
Escuela Superior de Tecnología y Ciencias Experimentales
Universitat Jaume I
Av. de Vicent Sos Baynat s/n
12071 Castelló de la Plana (Spain)
Tel: +34 964 72 8365
Fax: +34 964 72 8435
jvi...@lsi.uji.es

_______________________________________________
Haskell-Cafe mailing list
Haskell-Cafe@haskell.org
http://www.haskell.org/mailman/listinfo/haskell-cafe

Reply via email to