Функтор MoreLabels.Map.Make
module Make: functor (Ord : OrderedType) -> S
with type key = Ord.t
and type 'a t = 'a Map.Make(Ord).t
Функтор, создающий реализацию структуры map, используя тип с полным порядком.
| Параметры: |
|
type key
Тип ключей map.
type +'a t
Тип map из типа key в тип 'a.
val empty : 'a t
Пустой map.
val is_empty : 'a t -> bool
Проверка на пустоту map.
val mem : key -> 'a t -> bool
mem x m возвращает true если m содержит привязку для x, и false в противном случае.
val add : key:key -> data:'a -> 'a t -> 'a t
add ~key ~data m возвращает map, содержащую те же привязки, что и m, плюс привязку key к data. Если key уже был привязан в m к значению, физически равному data, возвращается m без изменений (результат функции тогда физически равен m). В противном случае предыдущая привязка key в m исчезает.
- До 4.03 Физическое равенство не гарантировалось.
val update : key:key -> f:('a option -> 'a option) -> 'a t -> 'a t
update ~key ~f m возвращает map, содержащую те же привязки, что и m, за исключением привязки key. В зависимости от значения y, где y является f (find_opt key m), привязка key добавляется, удаляется или обновляется. Если y равно None, привязка удаляется, если она существует; в противном случае, если y равно Some z, то key ассоциируется со значением z в результирующей map. Если key уже был привязан в m к значению, физически равному z, возвращается m без изменений (результат функции тогда физически равен m).
- С 4.06.0
val singleton : key -> 'a -> 'a t
singleton x y возвращает map, содержащую одну привязку y для x.
- С 3.12.0
val remove : key -> 'a t -> 'a t
remove x m возвращает map, содержащую те же привязки, что и m, за исключением x , которое не привязано в возвращаемой map. Если x не находилось в m, возвращается m без изменений (результат функции тогда физически равен m).
- До 4.03 Физическое равенство не гарантировалось.
val merge : f:(key -> 'a option -> 'b option -> 'c option) -> 'a t -> 'b t -> 'c t
merge ~f m1 m2 вычисляет map, чьи ключи являются подмножеством ключей m1 и m2 . Наличие каждой такой привязки и соответствующего значения определяется функцией f . В терминах операции find_opt у нас есть find_opt x (merge f m1 m2) = f x (find_opt x m1) (find_opt x m2) для любого ключа x при условии f x None None = None.
- С 3.12.0
val union : f:(key -> 'a -> 'a -> 'a option) -> 'a t -> 'a t -> 'a t
union ~f m1 m2 вычисляет map, чьи ключи являются подмножеством ключей m1 и m2 . Когда одна и та же привязка определена в обоих аргументах, функция f используется для их объединения. Это частный случай merge: union f m1 m2 эквивалентно merge f' m1 m2, где
f' _key None None = Nonef' _key (Some v) None = Some vf' _key None (Some v) = Some vf' key (Some v1) (Some v2) = f key v1 v2
- С 4.03.0
val compare : cmp:('a -> 'a -> int) -> 'a t -> 'a t -> int
Полный порядок между map. Первый аргумент — это полный порядок, используемый для сравнения данных, связанных с одинаковыми ключами в двух map.
val equal : cmp:('a -> 'a -> bool) -> 'a t -> 'a t -> bool
equal ~cmp m1 m2 проверяет, равны ли map m1 и m2, то есть содержат ли они равные ключи и связывают их с равными данными. cmp — это предикат равенства, используемый для сравнения данных, связанных с ключами.
val iter : f:(key:key -> data:'a -> unit) -> 'a t -> unit
iter ~f m применяет f ко всем привязкам в map m . f получает ключ в качестве первого аргумента и связанное значение как второй аргумент. Привязки передаются f в возрастающем порядке относительно порядка над типом ключей.
val fold : f:(key:key -> data:'a -> 'b -> 'b) -> 'a t -> init:'b -> 'b
fold ~f m ~init вычисляет (f kN dN ... (f k1 d1 init)...), где k1 ... kN — это ключи всех привязок в m (в возрастающем порядке), а d1 ... dN — это связанные данные.
val for_all : f:(key -> 'a -> bool) -> 'a t -> bool
for_all ~f m проверяет, удовлетворяют ли все привязки map предикату f.
- С 3.12.0
val exists : f:(key -> 'a -> bool) -> 'a t -> bool
exists ~f m проверяет, удовлетворяет ли хотя бы одна привязка map предикату f.
- С 3.12.0
val filter : f:(key -> 'a -> bool) -> 'a t -> 'a t
filter ~f m возвращает map со всеми привязками из m, удовлетворяющими предикату p . Если каждая привязка в m удовлетворяет f, возвращается m без изменений (результат функции тогда физически равен m).
- До 4.03 Физическое равенство не гарантировалось.
- С 3.12.0
val filter_map : f:(key -> 'a -> 'b option) -> 'a t -> 'b t
filter_map ~f m применяет функцию f к каждой привязке m, и строит map из результатов. Для каждой привязки (k, v) в входной map:
- если
f k vравноNone, тоkне находится в результате, - если
f k vравноSome v', то привязка(k, v')находится в выходной map.
Например, следующая функция для map, значениями которых являются списки
filter_map
(fun _k li -> match li with [] -> None | _::tl -> Some tl)
m
удаляет все привязки m , значение которых является пустым списком, и извлекает первый элемент каждого значения, которое не пусто.
- С 4.11.0
val partition : f:(key -> 'a -> bool) -> 'a t -> 'a t * 'a t
partition ~f m возвращает пару map (m1, m2), где m1 содержит все привязки m , которые удовлетворяют предикату f, а m2 — это map со всеми привязками m , которые не удовлетворяют f.
- С 3.12.0
val cardinal : 'a t -> int
Возвращает количество привязок в map.
- С 3.12.0
val bindings : 'a t -> (key * 'a) list
Возвращает список всех привязок заданной map. Возвращаемый список отсортирован в возрастающем порядке ключей относительно порядка Ord.compare, где Ord — это аргумент, заданный Stdlib.Map.Make.
- С 3.12.0
val min_binding : 'a t -> key * 'a
Возвращает привязку с наименьшим ключом в заданной map (относительно порядка Ord.compare ), или вызывает Not_found , если map пуста.
- С 3.12.0
val min_binding_opt : 'a t -> (key * 'a) option
Возвращает привязку с наименьшим ключом в заданной map (относительно порядка Ord.compare ), или None , если map пуста.
- С 4.05
val max_binding : 'a t -> key * 'a
Аналогично MoreLabels.Map.S.min_binding, но возвращает привязку с наибольшим ключом в заданной map.
- С 3.12.0
val max_binding_opt : 'a t -> (key * 'a) option
Аналогично MoreLabels.Map.S.min_binding_opt, но возвращает привязку с наибольшим ключом в заданной map.
- С 4.05
val choose : 'a t -> key * 'a
Возвращает одну привязку заданной map, или вызывает Not_found , если map пуста. Выбор привязки не определен, но равные привязки будут выбраны для равных map.
- С 3.12.0
val choose_opt : 'a t -> (key * 'a) option
Возвращает одну привязку заданной map, или None , если map пуста. Выбор привязки не определен, но равные привязки будут выбраны для равных map.
- С 4.05
val split : key -> 'a t -> 'a t * 'a option * 'a t
split x m возвращает тройку (l, data, r), где l — это карта со всеми привязками m, ключ которых строго меньше x; r — это карта со всеми привязками m, ключ которых строго больше x; data — это None, если m не содержит привязки для x, или Some v, если m связывает v с x.
- Since 3.12.0
val find : key -> 'a t -> 'a
find x m возвращает текущее значение x в m, или возбуждает Not_found, если привязка для x не существует.
val find_opt : key -> 'a t -> 'a option
find_opt x m возвращает Some v, если текущее значение x в m равно v, или None, если привязки для x не существует.
- Since 4.05
val find_first : f:(key -> bool) -> 'a t -> key * 'a
find_first ~f m, где f — монотонно возрастающая функция, возвращает привязку m с наименьшим ключом k таким, что f k, или возбуждает Not_found, если такой ключ не существует.
Например, find_first (fun k -> Ord.compare k x >= 0) m вернет первую привязку k, v для m, где Ord.compare k x >= 0 (интуитивно: k >= x), или возбудит Not_found, если x больше любого элемента m.
- Since 4.05
val find_first_opt : f:(key -> bool) -> 'a t -> (key * 'a) option
find_first_opt ~f m, где f — монотонно возрастающая функция, возвращает необязательную привязку m с наименьшим ключом k таким, что f k, или None, если такой ключ не существует.
- Since 4.05
val find_last : f:(key -> bool) -> 'a t -> key * 'a
find_last ~f m, где f — монотонно убывающая функция, возвращает привязку m с наибольшим ключом k таким, что f k, или возбуждает Not_found, если такой ключ не существует.
- Since 4.05
val find_last_opt : f:(key -> bool) -> 'a t -> (key * 'a) option
find_last_opt ~f m, где f — монотонно убывающая функция, возвращает необязательную привязку m с наибольшим ключом k таким, что f k, или None, если такой ключ не существует.
- Since 4.05
val map : f:('a -> 'b) -> 'a t -> 'b t
map ~f m возвращает карту с тем же доменом, что и m, где связанное значение a всех привязок m было заменено результатом применения f к a. Привязки передаются в f в порядке возрастания по отношению к упорядочению по типу ключей.
val mapi : f:(key -> 'a -> 'b) -> 'a t -> 'b t
То же, что и MoreLabels.Map.S.map, но функция получает в качестве аргументов и ключ, и связанное значение для каждой привязки карты.
Карты и Последовательности
val to_seq : 'a t -> (key * 'a) Seq.t
Итерировать по всей карте в порядке возрастания ключей
- Since 4.07
val to_rev_seq : 'a t -> (key * 'a) Seq.t
Итерировать по всей карте в порядке убывания ключей
- Since 4.12
val to_seq_from : key -> 'a t -> (key * 'a) Seq.t
to_seq_from k m итерирует по подмножеству привязок m, в порядке возрастания ключей, начиная с ключа k или выше.
- Since 4.07
val add_seq : (key * 'a) Seq.t -> 'a t -> 'a t
Добавить заданные привязки в карту в порядке.
- Since 4.07
val of_seq : (key * 'a) Seq.t -> 'a t
Создать карту из заданных привязок
- Since 4.07
© 1995-2022 INRIA.
https://v2.ocaml.org/releases/4.14/htmlman/libref/MoreLabels.Map.Make.html