プログラミング言語SML#解説 3.7.1版
26 Standard ML標準ライブラリ

26.2 ARRAY_SLICE

配列の一部を表現する抽象データ型とその操作を提供.

signature ARRAY_SLICE =
sig
  type ’a slice
  val length : ’a slice -> int
  val all : (’a -> bool) -> ’a slice -> bool
  val app : (’a -> unit) -> ’a slice -> unit
  val appi : (int * ’a -> unit) -> ’a slice -> unit
  val base : ’a slice -> ’a Array.array * int * int
  val collate : (’a * ’a -> order) -> ’a slice * ’a slice -> order
  val copy : {src : ’a slice, dst : ’a Array.array, di : int} -> unit
  val copyVec : {src : ’a VectorSlice.slice, dst : ’a Array.array, di : int} -> unit
  val exists : (’a -> bool) -> ’a slice -> bool
  val find : (’a -> bool) -> ’a slice -> ’a option
  val findi : (int * ’a -> bool) -> ’a slice -> (int * ’a) option
  val foldl : (’a * ’b -> ’b) -> ’b -> ’a slice -> ’b
  val foldli : (int * ’a * ’b -> ’b) -> ’b -> ’a slice -> ’b
  val foldr : (’a * ’b -> ’b) -> ’b -> ’a slice -> ’b
  val foldri : (int * ’a * ’b -> ’b) -> ’b -> ’a slice -> ’b
  val full : ’a Array.array -> ’a slice
  val getItem : ’a slice -> (’a * ’a slice) option
  val isEmpty : ’a slice -> bool
  val modify : (’a -> ’a) -> ’a slice -> unit
  val modifyi : (int * ’a -> ’a) -> ’a slice -> unit
  val slice : ’a Array.array * int * int option -> ’a slice
  val sub : ’a slice * int -> ’a
  val subslice : ’a slice * int * int option -> ’a slice
  val update : ’a slice * int * ’a -> unit
  val vector : ’a slice -> ’a Vector.vector
end

シグネチャを実装するストラクチャ

  • ArraySlide : ARRAY_SLICE

    type ’a slice (= boxed)