Queue (3)
NAME
Queue - First-in first-out queues.Module
Module QueueDocumentation
Module
Queue
:
sig end
First-in first-out queues.
This module implements queues (FIFOs), with in-place modification.
Warning This module is not thread-safe: each
Queue.t
value
must be protected from concurrent access (e.g. with a
Mutex.t
).
Failure to do so can lead to a crash.
type
'a
t
The type of queues containing elements of type
'a
.
exception Empty
Raised when
Queue.take
or
Queue.peek
is applied to an empty queue.
val create
:
unit -> 'a t
Return a new queue, initially empty.
val add
:
'a -> 'a t -> unit
add x q
adds the element
x
at the end of the queue
q
.
val push
:
'a -> 'a t -> unit
push
is a synonym for
add
.
val take
:
'a t -> 'a
take q
removes and returns the first element in queue
q
,
or raises
Empty
if the queue is empty.
val pop
:
'a t -> 'a
pop
is a synonym for
take
.
val peek
:
'a t -> 'a
peek q
returns the first element in queue
q
, without removing
it from the queue, or raises
Empty
if the queue is empty.
val top
:
'a t -> 'a
top
is a synonym for
peek
.
val clear
:
'a t -> unit
Discard all elements from a queue.
val copy
:
'a t -> 'a t
Return a copy of the given queue.
val is_empty
:
'a t -> bool
Return
true
if the given queue is empty,
false
otherwise.
val length
:
'a t -> int
Return the number of elements in a queue.
val iter
:
('a -> unit) -> 'a t -> unit
iter f q
applies
f
in turn to all elements of
q
,
from the least recently entered to the most recently entered.
The queue itself is unchanged.
val fold
:
('b -> 'a -> 'b) -> 'b -> 'a t -> 'b
fold f accu q
is equivalent to
List.fold_left f accu l
,
where
l
is the list of
q
's elements. The queue remains
unchanged.
val transfer
:
'a t -> 'a t -> unit
transfer q1 q2
adds all of
q1
's elements at the end of
the queue
q2
, then clears
q1
. It is equivalent to the
sequence
iter (fun x -> add x q2) q1; clear q1
, but runs
in constant time.