(* -*- mode: sml -*- * $Id: ary3.smlnj,v 1.2 2001/07/09 00:25:27 doug Exp $ * http://www.bagley.org/~doug/shootout/ *) structure Test : sig val main : (string * string list) -> OS.Process.status end = struct fun index i = i; fun ary n = let val x = Array.array(n, 0) val y = Array.array(n, 0) fun xinit i = if i = n then () else (Array.update(x, i, i + 1) ; xinit (i + 1)) fun xtoy i = if i < 0 then () else (Array.update(y, i, Array.sub(x, i) + Array.sub(y, i)) ; xtoy (i - 1)) fun aryloop i = if i < 0 then () else (xtoy(n-1); aryloop (i-1)) in xinit 0; aryloop 999; print (Int.toString (Array.sub(y, 0))); print " "; print (Int.toString (Array.sub(y, (n-1)))); print "\n" end; fun atoi s = case Int.fromString s of SOME num => num | NONE => 0; fun main(name, args) = let val arg = hd(args @ ["1"]) val num = atoi arg in ary num; OS.Process.success end end val _ = SMLofNJ.exportFn("ary3", Test.main);