src/Pure/General/array.ML
author wenzelm
Wed, 19 Apr 2023 23:27:33 +0200
changeset 77887 dae8b7a9a89a
child 77896 a9626bcb0c3b
permissions -rw-r--r--
more operations, following Isabelle/ML conventions;
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
77887
dae8b7a9a89a more operations, following Isabelle/ML conventions;
wenzelm
parents:
diff changeset
     1
(*  Title:      Pure/General/array.ML
dae8b7a9a89a more operations, following Isabelle/ML conventions;
wenzelm
parents:
diff changeset
     2
    Author:     Makarius
dae8b7a9a89a more operations, following Isabelle/ML conventions;
wenzelm
parents:
diff changeset
     3
dae8b7a9a89a more operations, following Isabelle/ML conventions;
wenzelm
parents:
diff changeset
     4
Additional operations for structure Array, following Isabelle/ML conventions.
dae8b7a9a89a more operations, following Isabelle/ML conventions;
wenzelm
parents:
diff changeset
     5
*)
dae8b7a9a89a more operations, following Isabelle/ML conventions;
wenzelm
parents:
diff changeset
     6
dae8b7a9a89a more operations, following Isabelle/ML conventions;
wenzelm
parents:
diff changeset
     7
signature ARRAY =
dae8b7a9a89a more operations, following Isabelle/ML conventions;
wenzelm
parents:
diff changeset
     8
sig
dae8b7a9a89a more operations, following Isabelle/ML conventions;
wenzelm
parents:
diff changeset
     9
  include ARRAY
dae8b7a9a89a more operations, following Isabelle/ML conventions;
wenzelm
parents:
diff changeset
    10
  val nth: 'a array -> int -> 'a
dae8b7a9a89a more operations, following Isabelle/ML conventions;
wenzelm
parents:
diff changeset
    11
  val forall: ('a -> bool) -> 'a array -> bool
dae8b7a9a89a more operations, following Isabelle/ML conventions;
wenzelm
parents:
diff changeset
    12
  val member: ('a * 'a -> bool) -> 'a array -> 'a -> bool
dae8b7a9a89a more operations, following Isabelle/ML conventions;
wenzelm
parents:
diff changeset
    13
  val fold: ('a -> 'b -> 'b) -> 'a array -> 'b -> 'b
dae8b7a9a89a more operations, following Isabelle/ML conventions;
wenzelm
parents:
diff changeset
    14
  val fold_rev: ('a -> 'b -> 'b) -> 'a array -> 'b -> 'b
dae8b7a9a89a more operations, following Isabelle/ML conventions;
wenzelm
parents:
diff changeset
    15
end;
dae8b7a9a89a more operations, following Isabelle/ML conventions;
wenzelm
parents:
diff changeset
    16
dae8b7a9a89a more operations, following Isabelle/ML conventions;
wenzelm
parents:
diff changeset
    17
structure Array: ARRAY =
dae8b7a9a89a more operations, following Isabelle/ML conventions;
wenzelm
parents:
diff changeset
    18
struct
dae8b7a9a89a more operations, following Isabelle/ML conventions;
wenzelm
parents:
diff changeset
    19
dae8b7a9a89a more operations, following Isabelle/ML conventions;
wenzelm
parents:
diff changeset
    20
open Array;
dae8b7a9a89a more operations, following Isabelle/ML conventions;
wenzelm
parents:
diff changeset
    21
dae8b7a9a89a more operations, following Isabelle/ML conventions;
wenzelm
parents:
diff changeset
    22
fun nth arr i = sub (arr, i);
dae8b7a9a89a more operations, following Isabelle/ML conventions;
wenzelm
parents:
diff changeset
    23
dae8b7a9a89a more operations, following Isabelle/ML conventions;
wenzelm
parents:
diff changeset
    24
val forall = all;
dae8b7a9a89a more operations, following Isabelle/ML conventions;
wenzelm
parents:
diff changeset
    25
dae8b7a9a89a more operations, following Isabelle/ML conventions;
wenzelm
parents:
diff changeset
    26
fun member eq arr x = exists (fn y => eq (x, y)) arr;
dae8b7a9a89a more operations, following Isabelle/ML conventions;
wenzelm
parents:
diff changeset
    27
dae8b7a9a89a more operations, following Isabelle/ML conventions;
wenzelm
parents:
diff changeset
    28
fun fold f arr x = foldl (fn (a, b) => f a b) x arr;
dae8b7a9a89a more operations, following Isabelle/ML conventions;
wenzelm
parents:
diff changeset
    29
fun fold_rev f arr x = foldr (fn (a, b) => f a b) x arr;
dae8b7a9a89a more operations, following Isabelle/ML conventions;
wenzelm
parents:
diff changeset
    30
dae8b7a9a89a more operations, following Isabelle/ML conventions;
wenzelm
parents:
diff changeset
    31
end;