Функтор MoreLabels.Set.Make
module Make: functor (Ord : OrderedType) -> S
with type elt = Ord.t
and type t = Set.Make(Ord).t
Функтор, создающий реализацию структуры множества, заданной для полностью упорядоченного типа.
| Параметры: |
|
type elt
Тип элементов множества.
type t
Тип множеств.
val empty : t
Пустое множество.
val is_empty : t -> bool
Проверка на пустоту множества.
val mem : elt -> t -> bool
mem x s проверяет, принадлежит ли x множеству s.
val add : elt -> t -> t
add x s возвращает множество, содержащее все элементы s, плюс x. Если x уже присутствует в s, возвращается s без изменений (результат функции физически равен s).
- До 4.03 Физическое равенство не гарантировалось.
val singleton : elt -> t
singleton x возвращает одноэлементное множество, содержащее только x.
val remove : elt -> t -> t
remove x s возвращает множество, содержащее все элементы s, кроме x. Если x отсутствует в s, возвращается s без изменений (результат функции физически равен s).
- До 4.03 Физическое равенство не гарантировалось.
val union : t -> t -> t
Объединение множеств.
val inter : t -> t -> t
Пересечение множеств.
val disjoint : t -> t -> bool
Проверка, являются ли два множества непересекающимися.
- С 4.08.0
val diff : t -> t -> t
Разность множеств: diff s1 s2 содержит элементы s1, которые не принадлежат s2.
val compare : t -> t -> int
Полное упорядочение между множествами. Может быть использовано как функция упорядочивания для работы с множествами множеств.
val equal : t -> t -> bool
equal s1 s2 проверяет, равны ли множества s1 и s2, то есть содержат ли они одинаковые элементы.
val subset : t -> t -> bool
subset s1 s2 проверяет, является ли множество s1 подмножеством множества s2.
val iter : f:(elt -> unit) -> t -> unit
iter ~f s применяет f по очереди ко всем элементам s. Элементы s представляются f в возрастающем порядке относительно упорядочения над типом элементов.
val map : f:(elt -> elt) -> t -> t
map ~f s — множество, элементы которого — f a0, f a1, ..., f, где
aNa0, a1, ..., aN — элементы множества s.
Элементы передаются в f в порядке возрастания по отношению к упорядочению над типом элементов.
Если ни один элемент s не изменится при применении f, возвращается s без изменений. (Если каждый результат f физически равен его входному значению, возвращаемое множество физически равно s.)
- С 4.04.0
val fold : f:(elt -> 'a -> 'a) -> t -> init:'a -> 'a
fold ~f s init вычисляет (f xN ... (f x2 (f x1 init))...), где x1 ... xN — элементы множества s, в порядке возрастания.
val for_all : f:(elt -> bool) -> t -> bool
for_all ~f s проверяет, удовлетворяют ли все элементы множества предикату f.
val exists : f:(elt -> bool) -> t -> bool
exists ~f s проверяет, удовлетворяет ли хотя бы один элемент множества предикату f.
val filter : f:(elt -> bool) -> t -> t
filter ~f s возвращает множество всех элементов из s, которые удовлетворяют предикату f. Если f удовлетворяет всем элементам в s, возвращается s без изменений (результат функции физически равен s).
- До 4.03 Физическое равенство не гарантировалось.
val filter_map : f:(elt -> elt option) -> t -> t
filter_map ~f s возвращает множество всех v, для которых f x = Some v для некоторого элемента x множества s.
Например,
filter_map (fun n -> if n mod 2 = 0 then Some (n / 2) else None) s
— это множество половин чётных элементов множества s.
Если ни один элемент множества s не изменяется или отбрасывается f (если f x = Some x для каждого элемента x ), то s возвращается без изменений: результат функции физически равен s.
- С 4.11.0
val partition : f:(elt -> bool) -> t -> t * t
partition ~f s возвращает пару множеств (s1, s2), где s1 — множество всех элементов s, удовлетворяющих предикату f, а s2 — множество всех элементов s, не удовлетворяющих f.
val cardinal : t -> int
Возвращает количество элементов множества.
val elements : t -> elt list
Возвращает список всех элементов данного множества. Возвращаемый список отсортирован в порядке возрастания относительно упорядочения Ord.compare, где Ord — аргумент, переданный в Stdlib.Set.Make.
val min_elt : t -> elt
Возвращает наименьший элемент данного множества (относительно упорядочения Ord.compare), или вызывает исключение Not_found, если множество пусто.
val min_elt_opt : t -> elt option
Возвращает наименьший элемент данного множества (относительно упорядочения Ord.compare), или None, если множество пусто.
- С 4.05
val max_elt : t -> elt
Аналогично MoreLabels.Set.S.min_elt, но возвращает наибольший элемент данного множества.
val max_elt_opt : t -> elt option
Аналогично MoreLabels.Set.S.min_elt_opt, но возвращает наибольший элемент данного множества.
- С 4.05
val choose : t -> elt
Возвращает один элемент данного множества, или вызывает исключение Not_found, если множество пусто. Какой элемент выбран, не определено, но для равных множеств будут выбраны равные элементы.
val choose_opt : t -> elt option
Возвращает один элемент данного множества, или None, если множество пусто. Какой элемент выбран, не определено, но для равных множеств будут выбраны равные элементы.
- С 4.05
val split : elt -> t -> t * bool * t
split x s возвращает тройку (l, present, r), где l — множество элементов из s, которые строго меньше x; r — множество элементов из s , которые строго больше x; present — false, если s не содержит элемента, равного x, или true, если s содержит элемент, равный x.
val find : elt -> t -> elt
find x s возвращает элемент множества s, равный x (согласно Ord.compare ), или вызывает исключение Not_found , если такого элемента не существует.
- С 4.01.0
val find_opt : elt -> t -> elt option
find_opt x s возвращает элемент из s , равный x (согласно Ord.compare ), или None, если такого элемента не существует.
- С 4.05
val find_first : f:(elt -> bool) -> t -> elt
find_first ~f s, где f — монотонно возрастающая функция, возвращает наименьший элемент e из s , такой что f e, или вызывает исключение Not_found, если такого элемента не существует.
Например, find_first (fun e -> Ord.compare e x >= 0) s вернёт первый элемент e множества s , где Ord.compare e x >= 0 (интуитивно: e >= x ), или вызовет исключение Not_found , если x больше любого элемента множества s.
- С 4.05
val find_first_opt : f:(elt -> bool) -> t -> elt option
find_first_opt ~f s, где f — монотонно возрастающая функция, возвращает опцию, содержащую наименьший элемент e из s такой, что f e, или None в случае отсутствия такого элемента.
- Since 4.05
val find_last : f:(elt -> bool) -> t -> elt
find_last ~f s, где f — монотонно убывающая функция, возвращает наибольший элемент e из s такой, что f e, или вызывает Not_found в случае отсутствия такого элемента.
- Since 4.05
val find_last_opt : f:(elt -> bool) -> t -> elt option
find_last_opt ~f s, где f — монотонно убывающая функция, возвращает опцию, содержащую наибольший элемент e из s такой, что f e, или None в случае отсутствия такого элемента.
- Since 4.05
val of_list : elt list -> t
of_list l создаёт множество из списка элементов. Обычно это более эффективно, чем применение add к списку, за исключением, возможно, списков с большим количеством дублируемых элементов.
- Since 4.02.0
Итераторы
val to_seq_from : elt -> t -> elt Seq.t
to_seq_from x s итерируется по подмножеству элементов s в порядке возрастания, начиная с x или выше.
- Since 4.07
val to_seq : t -> elt Seq.t
Итерироваться по всему множеству в порядке возрастания
- Since 4.07
val to_rev_seq : t -> elt Seq.t
Итерироваться по всему множеству в порядке убывания
- Since 4.12
val add_seq : elt Seq.t -> t -> t
Добавить заданные элементы в множество в порядке.
- Since 4.07
val of_seq : elt Seq.t -> t
Построить множество из заданных связей
- Since 4.07
© 1995-2022 INRIA.
https://v2.ocaml.org/releases/4.14/htmlman/libref/MoreLabels.Set.Make.html