Spec-Zone.ru › OCaml

Модуль Стеки

module Stack: sig .. end

Стеки «последним вошел — первым вышел».

Этот модуль реализует стеки (LIFO), с модификацией на месте.

  • Предупреждение unsynchronized_access. Несинхронизированный доступ к стекам является програмной ошибкой.

Несинхронизированный доступ

Несинхронизированный доступ к стеку может привести к некорректному состоянию очереди. Следовательно, одновременный доступ к стекам должен быть синхронизирован (например, с помощью Mutex.t).

type !'a t 

Тип стеков, содержащих элементы типа 'a.

exception Empty

Вызывается, когда Stack.pop или Stack.top применяется к пустому стеку.

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 drop : 'a t -> unit

drop s удаляет самый верхний элемент в стеке s, или вызывает Stack.Empty если стек пуст.

  • Since 5.1
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 : ('acc -> 'a -> 'acc) -> 'acc -> 'a t -> 'acc

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-2024 INRIA.
https://ocaml.org/manual/5.2/api/Stack.html

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API