Модуль Очередь
module Queue: sig .. end
Очереди «первым вошел — первым вышел».
Этот модуль реализует очереди (FIFO) с модификацией на месте.
Предупреждение Этот модуль не потокобезопасен: каждое значение Queue.t должно быть защищено от одновременного доступа (например, с помощью Mutex.t). Отсутствие такой защиты может привести к сбою.
type 'a t
Тип очередей, содержащих элементы типа 'a.
exception Empty
Возникает, когда Queue.take или Queue.peek применяются к пустой очереди.
val create : unit -> 'a t
Возвращает новую очередь, изначально пустую.
val add : 'a -> 'a t -> unit
add x q добавляет элемент x в конец очереди q.
val push : 'a -> 'a t -> unit
push — синоним add.
val take : 'a t -> 'a
take q удаляет и возвращает первый элемент в очереди q, или вызывает Queue.Empty, если очередь пуста.
val take_opt : 'a t -> 'a option
take_opt q удаляет и возвращает первый элемент в очереди q, или возвращает None , если очередь пуста.
- Since 4.08
val pop : 'a t -> 'a
pop — синоним take.
val peek : 'a t -> 'a
peek q возвращает первый элемент в очереди q, не удаляя его из очереди, или вызывает Queue.Empty, если очередь пуста.
val peek_opt : 'a t -> 'a option
peek_opt q возвращает первый элемент в очереди q, не удаляя его из очереди, или возвращает None , если очередь пуста.
- Since 4.08
val top : 'a t -> 'a
top — синоним peek.
val clear : 'a t -> unit
Очистить все элементы из очереди.
val copy : 'a t -> 'a t
Возвращает копию данной очереди.
val is_empty : 'a t -> bool
Возвращает true, если заданная очередь пуста, false, в противном случае.
val length : 'a t -> int
Возвращает количество элементов в очереди.
val iter : ('a -> unit) -> 'a t -> unit
iter f q последовательно применяет f к каждому элементу q, от наименее недавно добавленного к наиболее недавно добавленному. Очередь при этом не изменяется.
val fold : ('b -> 'a -> 'b) -> 'b -> 'a t -> 'b
fold f accu q эквивалентно List.fold_left f accu l, где l — список элементов q. Очередь при этом не изменяется.
val transfer : 'a t -> 'a t -> unit
transfer q1 q2 добавляет все элементы из q1 в конец очереди q2, затем очищает q1. Эквивалентно последовательности iter (fun x -> add x q2) q1; clear q1, но выполняется за константное время.
Итераторы
val to_seq : 'a t -> 'a Seq.t
Итерируется по очереди в порядке «спереди назад». Поведение не определено, если очередь изменяется во время итерации.
- Since 4.07
val add_seq : 'a t -> 'a Seq.t -> unit
Добавляет элементы из последовательности в конец очереди.
- Since 4.07
val of_seq : 'a Seq.t -> 'a t
Создаёт очередь из последовательности.
- Since 4.07
© 1995-2022 INRIA.
https://v2.ocaml.org/releases/4.14/htmlman/libref/Queue.html