Модуль Set
module Set: sig .. end
Множества над упорядоченными типами.
Этот модуль реализует структуру данных множество, задавая функцию полного упорядочения для элементов множества. Все операции над множествами являются чисто прикладными (без побочных эффектов). Реализация использует сбалансированные двоичные деревья, поэтому она достаточно эффективна: вставка и проверка принадлежности занимают время, логарифмически зависящее от размера множества, например.
Функтор Set.Make создаёт реализации для любого типа, заданного функцией compare. Например:
module IntPairs =
struct
type t = int * int
let compare (x0,y0) (x1,y1) =
match Stdlib.compare x0 x1 with
0 -> Stdlib.compare y0 y1
| c -> c
end
module PairsSet = Set.Make(IntPairs)
let m = PairsSet.(empty |> add (2,3) |> add (5,7) |> add (11,13))
Это создаёт новый модуль PairsSet, с новым типом PairsSet.t множеств int * int.
module type OrderedType = sig .. end
Входная сигнатура фунтора Set.Make.
module type S = sig .. end
Выходная сигнатура фунтора Set.Make.
module Make: functor (Ord : OrderedType) -> S with type elt = Ord.t
Функтор, создающий реализацию структуры данных множество для полностью упорядоченного типа.
© 1995-2024 INRIA.
https://ocaml.org/manual/5.2/api/Set.html