Модуль Map
module Map: sig .. end
Таблицы ассоциаций над упорядоченными типами.
Этот модуль реализует аппликативные таблицы ассоциаций, также известные как конечные отображения или словари, учитывая функцию полного упорядочения ключей. Все операции над отображениями являются чисто аппликативными (без побочных эффектов). Реализация использует сбалансированные двоичные деревья, поэтому поиск и вставка занимают время, логарифмически зависящее от размера отображения.
Например:
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 PairsMap = Map.Make(IntPairs)
let m = PairsMap.(empty |> add (0,1) "hello" |> add (1,0) "world")
Это создаёт новый модуль PairsMap, с новым типом 'a PairsMap.t отображений из int * int в 'a. В этом примере m содержит string значения, поэтому его тип string PairsMap.t.
module type OrderedType = sig .. end
Входная сигнатура функтора Map.Make.
module type S = sig .. end
Выходная сигнатура функтора Map.Make.
module Make: functor (Ord : OrderedType) -> S with type key = Ord.t
Функтор, создающий реализацию структуры отображения, учитывая полностью упорядоченный тип.
© 1995-2024 INRIA.
https://ocaml.org/manual/5.2/api/Map.html