Overview  Index  Help 
Standard ML Basis Library

Array2


structure Array2 :> ARRAY2 =
struct
  structure A = Array
  type 'a array = {data : 'a A.array, nrows : int, ncols : int}
  type 'a region =
       {
         base : 'a array,
         row : int,
         col : int,
         nrows : int option,
         ncols : int option
       }
  datatype traversal = RowMajor | ColMajor
  datatype index = DONE | INDX of {i : int, r : int, c : int}
  val ltu
  val unsafeUpdate
  val unsafeSub
  val mkArray
  val unsafeIndex
  val index
  val chkSize
  val array : int * int * 'a -> 'a array
  val fromList : 'a list list -> 'a array
  val tabulateRM
  val tabulateCM
  val tabulate : traversal -> int * int * (int * int -> 'a) -> 'a array
  val sub : 'a array * int * int -> 'a
  val update : 'a array * int * int * 'a -> unit
  val dimensions : 'a array -> int * int
  val nCols : 'a array -> int
  val nRows : 'a array -> int
  val row : 'a array * int -> 'a Vector.vector
  val column : 'a array * int -> 'a Vector.vector
  val chkRegion
  val copy
      : {src : 'a region, dst : 'a array, dst_row : int, dst_col : int} -> unit
  val iterateRM
  val iterateCM
  val appi : traversal -> (int * int * 'a -> unit) -> 'a region -> unit
  val appRM
  val appCM
  val app : traversal -> ('a -> unit) -> 'a array -> unit
  val modifyi : traversal -> (int * int * 'a -> 'a) -> 'a region -> unit
  val modifyRM
  val modifyCM
  val modify : traversal -> ('a -> 'a) -> 'a array -> unit
  val foldi : traversal -> (int * int * 'a * 'b -> 'b) -> 'b -> 'a region -> 'b
  val foldRM
  val foldCM
  val fold : traversal -> ('a * 'b -> 'b) -> 'b -> 'a array -> 'b
end

 
Type detail

array

type 'a array = {data : 'a A.array, nrows : int, ncols : int}


region

type 'a region =
     {
       base : 'a array,
       row : int,
       col : int,
       nrows : int option,
       ncols : int option
     }

 
Datatype detail

traversal

datatype traversal = RowMajor | ColMajor


index

datatype index = DONE | INDX of {i : int, r : int, c : int}

 
DataConstructor detail

RowMajor

constructor RowMajor : traversal


ColMajor

constructor ColMajor : traversal


DONE

constructor DONE : index


INDX

constructor INDX : {i : int, r : int, c : int} -> index

 
Value detail

ltu

val ltu


unsafeUpdate

val unsafeUpdate


unsafeSub

val unsafeSub


mkArray

val mkArray


unsafeIndex

val unsafeIndex


index

val index


chkSize

val chkSize


array

val array : int * int * 'a -> 'a array


fromList

val fromList : 'a list list -> 'a array


tabulateRM

val tabulateRM


tabulateCM

val tabulateCM


tabulate

val tabulate : traversal -> int * int * (int * int -> 'a) -> 'a array


sub

val sub : 'a array * int * int -> 'a


update

val update : 'a array * int * int * 'a -> unit


dimensions

val dimensions : 'a array -> int * int


nCols

val nCols : 'a array -> int


nRows

val nRows : 'a array -> int


row

val row : 'a array * int -> 'a Vector.vector


column

val column : 'a array * int -> 'a Vector.vector


chkRegion

val chkRegion


copy

val copy
    : {src : 'a region, dst : 'a array, dst_row : int, dst_col : int} -> unit


iterateRM

val iterateRM


iterateCM

val iterateCM


appi

val appi : traversal -> (int * int * 'a -> unit) -> 'a region -> unit


appRM

val appRM


appCM

val appCM


app

val app : traversal -> ('a -> unit) -> 'a array -> unit


modifyi

val modifyi : traversal -> (int * int * 'a -> 'a) -> 'a region -> unit


modifyRM

val modifyRM


modifyCM

val modifyCM


modify

val modify : traversal -> ('a -> 'a) -> 'a array -> unit


foldi

val foldi : traversal -> (int * int * 'a * 'b -> 'b) -> 'b -> 'a region -> 'b


foldRM

val foldRM


foldCM

val foldCM


fold

val fold : traversal -> ('a * 'b -> 'b) -> 'b -> 'a array -> 'b

 


Overview  Index  Help 
Standard ML Basis Library

This document may be distributed freely over the internet as long as the copyright notice and license terms below are prominently displayed within every machine-readable copy.

Copyright © 2003 AT&T and Lucent Technologies. All rights reserved.

Permission is granted for internet users to make one paper copy for their own personal use. Further hardcopy reproduction is strictly prohibited. Permission to distribute the HTML document electronically on any medium other than the internet must be requested from the copyright holders by contacting the editors. Printed versions of the SML Basis Manual are available from Cambridge University Press. To order, please visit www.cup.org (North America) or www.cup.cam.ac.uk (outside North America).