Модуль Стеки
module Stack: sig .. end
Стеки «последним вошел — первым вышел».
Этот модуль реализует стеки (LIFO) с модификацией на месте.
- Предупреждение о несинхронизированном доступе. Несинхронизированный доступ к стекам является ошибкой программирования.
Несинхронизированный доступ
Несинхронизированный доступ к стеку может привести к недопустимому состоянию очереди. Таким образом, одновременный доступ к стекам должен быть синхронизирован (например, с помощью Mutex.t).
type 'a t
Тип стеков, содержащих элементы типа 'a.
exception Empty
val create : unit -> 'a t
Возвращает новый стек, изначально пустой.
val push : 'a -> 'a t -> unit
push x s добавляет элемент x в верхнюю часть стека s.
val pop : 'a t -> 'a
pop s удаляет и возвращает самый верхний элемент в стеке s, или вызывает Stack.Empty, если стек пуст.
val pop_opt : 'a t -> 'a option
pop_opt s удаляет и возвращает самый верхний элемент в стеке s, или возвращает None, если стек пуст.
- Since 4.08
val top : 'a t -> 'a
top s возвращает самый верхний элемент в стеке s, или вызывает Stack.Empty, если стек пуст.
val top_opt : 'a t -> 'a option
top_opt s возвращает самый верхний элемент в стеке s, или None, если стек пуст.
- Since 4.08
val clear : 'a t -> unit
Удаляет все элементы из стека.
val copy : 'a t -> 'a t
Возвращает копию заданного стека.
val is_empty : 'a t -> bool
Возвращает true если заданный стек пуст, false в противном случае.
val length : 'a t -> int
Возвращает количество элементов в стеке. Время выполнения O(1)
val iter : ('a -> unit) -> 'a t -> unit
iter f s применяет f по очереди ко всем элементам s, от элемента вверху стека до элемента внизу стека. Сам стек не изменяется.
val fold : ('b -> 'a -> 'b) -> 'b -> 'a t -> 'b
fold f accu s — это (f (... (f (f accu x1) x2) ...) xn), где x1 — это вершина стека, x2 — второй элемент, а xn — нижний элемент. Стек не изменяется.
- Since 4.03
Стеки и Последовательности
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/5.0/htmlman/libref/Stack.html