packages feed

ArrayRef-0.1: Examples/Array/Unboxed.hs

-- This example demonstrates using of UArray, IOUArray and STUArray
import Control.Monad.ST
import Data.ArrayBZ.Unboxed

main = do
          -- This section demonstrates using of UArray
          test_UArray          |>  print

          -- This section demonstrates using of IOUArray
          test_IOUArray        >>= print

          -- This section demonstrates using of STUArray
          runST test_STUArray  |>  print


-- Using UArray
test_UArray =
          let array = listArray (1,10) [1..10] :: UArray Int Double
              elements = elems array
          in (sum elements)

-- Using IOUArray
test_IOUArray = do
          array <- newListArray (1,10) [1..10] :: IO (IOUArray Int Double)
          elements <- getElems array
          return (sum elements)

-- Using STUArray
test_STUArray = do
          array <- newListArray (1,10) [1..10] :: ST s (STUArray s Int Double)
          elements <- getElems array
          return (sum elements)

-- Helper operation
a |> b = b a