Kcas_data.StackLast-In First-Out (LIFO) stack.
The interface provides a subset of the OCaml Stdlib.Stack module. add_seq is not provided at all. Compositional versions of iter, fold, pop, and top are not provided.
The implementation is essentially a Treiber stack with randomized exponential backoff and support for constant time length.
val create : unit -> 'a tcreate () returns a new empty stack.
val of_seq : 'a Stdlib.Seq.t -> 'a tof_seq xs creates a stack from the sequence xs.
module Xt : sig ... endExplicit transaction log passing on stacks.
val is_empty : 'a t -> boolis_empty s determines whether the stack s is empty.
val length : 'a t -> intlength s returns the length of the stack s.
val clear : 'a t -> unitclear s removes all elements from the stack s.
val to_seq : 'a t -> 'a Stdlib.Seq.tto_seq s returns a concurrency and parallelism safe sequence for iterating through the elements of the stack top to bottom.
The sequence is based on a constant time, O(1), snapshot of the stack and modifications of the stack have no effect on the sequence.
val push : 'a -> 'a t -> unitpush x s adds the element x to the top of the stack s.
val pop_opt : 'a t -> 'a optionpop_opt s removes and returns the topmost element of the stack s, or None if the stack is empty.
val pop_all : 'a t -> 'a Stdlib.Seq.tpop_all s removes and returns a concurrency and parallelism safe sequence for iterating through all the elements that were in the stack top to bottom.
val pop_blocking : ?timeoutf:float -> 'a t -> 'apop_blocking s removes and returns the topmost element of the stack s, or blocks waiting for the queue to become non-empty.
val top_opt : 'a t -> 'a optiontop_opt s returns the topmost element in stack s, or None if the stack is empty.
val top_blocking : ?timeoutf:float -> 'a t -> 'atop_blocking s returns the topmost element in stack s, or blocks waiting for the queue to become non-empty.
val pop : 'a t -> 'apop s removes and returns the topmost element in stack s, or raises Empty if the stack is empty.
val top : 'a t -> 'atop s returns the topmost element in stack s, or raises Empty if the stack is empty.
val iter : ('a -> unit) -> 'a t -> unititer f s is equivalent to Seq.iter f (to_seq s).
val fold : ('b -> 'a -> 'b) -> 'b -> 'a t -> 'bfold f s is equivalent to Seq.fold_left f a (to_seq s).