-- $Id: ary3.ghc,v 1.2 2001/06/01 17:56:49 doug Exp $
-- http://www.bagley.org/~doug/shootout/
-- TBD: try rewrite with STUArray or IOUArray
module Main where
import IArray
import System
make_x :: Int -> UArray Int Int
make_x len = array (1,len) [(i, i) | i <- [1..len]]
make_y0 :: Int -> UArray Int Int
make_y0 len = array (1,len) [(i, 0) | i <- [1..len]]
add_array :: Int -> UArray Int Int -> UArray Int Int -> UArray Int Int
add_array 0 a b = b
add_array len a b = array (1,len) [(i, ((a ! i) + (b ! i))) | i <- [1..len]]
add_arrays_n :: Int -> Int -> UArray Int Int -> UArray Int Int -> UArray Int Int
add_arrays_n 0 len a b = b
add_arrays_n n len a b =
add_arrays_n (n-1) len a (add_array len a b)
ary3 :: Int -> IO ()
ary3 len = do putStr (show (y ! 1)) ; putStr " " ; putStrLn (show (y ! len))
where y = add_arrays_n 1000 len (make_x len) (make_y0 len)
main = do
~[n] <- getArgs
ary3 (read n::Int)