A queue implemented with an array.
The implementation will grow the array as necessary. The array will never
automatically be shrunk, but the size can be interrogated and set with
Iteration functions (
filter_inplace, and some functions from
Container.S1) will raise if the queue is
modified during iteration.
Differences from the standard module:
add, and takes the queue first.
take, and returns an option rather than raising
dequeue_exn is available if you want to raise
fold take labeled arguments.
transfer but is markedly different; see below.
of_list list returns a queue
t with the elements of
list in the same order as
the elements of
list (i.e. the first element of
t is the first element of the
filter_inplace t ~f removes all elements of
t that don't satisfy
t is unchanged. This is inplace in that it modifies
t; however, it uses
space linear in the final length of
get t i returns the
i'th element in
t, where the 0'th element is at the front of
t and the
length t - 1 element is at the back.
set_capacity t capacity sets the capacity of
t's backing array to at least
max capacity (length t). If the capacity changes, then this involves allocating
a new backing array and copying the queue elements over.