alms-0.4.9: lib/libarray.alms
(*
An array library.
*)
module Array : sig
exception ArrayIndex
type `a array = `a Prim.Array.array
val build : all `a. int -> (int -> `a) -> `a array
val swap : all `a. `a array -> int -> `a -> `a
val set : all `a. `a array -> int -> `a -> unit
val size : all `a. `a array -> int
(* Unlimited-only operations *)
val new : all 'a. int -> 'a -> 'a array
val get : all 'a. 'a array -> int -> 'a
end = struct
open Prim.Array
exception ArrayIndex
type `a array = `a Prim.Array.array
let new['a] (size : int) (elt : 'a) =
build size (fun (_: int) -> elt)
let swap[`a] (a : `a array) (ix : int) (elt : `a) =
try swap a ix elt
with _ -> raise ArrayIndex
let set[`a] (a : `a array) (ix : int) (elt : `a) =
swap a ix elt; ()
end