Up

module Fqueue

: sig

A simple polymorphic functional queue.

Amortized running times assumes that enqueue/dequeue are used sequentially, threading the changing Fqueue through the calls.

#
exception Empty
#
type 'a t
#
val test_invariants : 'a t -> unit

test via asserts whether invariants hold

#
val empty : 'a t

The empty queue

#
val enqueue : 'a t -> 'a -> 'a t

enqueue t x returns a queue with adds x to the end of t. Complexity: O(1)

#
val enqueue_top : 'a t -> 'a -> 'a t

enqueue a single element on the *top* of the queue. Complexity: amortized O(1)

#
val bot_exn : 'a t -> 'a

returns the bottom (most-recently enqueued element). Raises Empty if no element is found. Complexity: O(1)

#
val bot : 'a t -> 'a option

like bot_exn, but returns result optionally, without exception. Complexity: O(1)

#
val top_exn : 'a t -> 'a

Like bot_exn, except returns top (least-recently enqueued element. Complexity: O(1)

#
val top : 'a t -> 'a option

like top_exn, but returns result optionally, without exception, Complexity: O(1)

#
val dequeue_exn : 'a t -> 'a * 'a t

dequeue_exn t removes and returns the front of t, raising Empty if t is empty. Complexity: amortized O(1)

#
val dequeue : 'a t -> ('a * 'a t) option

Like dequeue_exn, but returns result optionally, without exception. Complexity: amortized O(1)

#
val discard_exn : 'a t -> 'a t

Returns version of queue with top element removed. Complexity: amortized O(1)

#
val to_list : 'a t -> 'a list

to_list t returns a list of the elements in t in order from least-recently-added (at the head) to most-recently added (at the tail). Complexity: O(n)

#
val length : 'a t -> int

complexity: O(1)

complexity: O(1)

#
val is_empty : 'a t -> bool
#
val compare : ('a -> 'a -> int) -> 'a t -> 'a t -> int
#
val t_of_sexp : (Sexplib.Sexp.t -> 'a) -> Sexplib.Sexp.t -> 'a t
#
val sexp_of_t : ('a -> Sexplib.Sexp.t) -> 'a t -> Sexplib.Sexp.t
#
val bin_t : 'a Bin_prot.Type_class.t -> 'a t Bin_prot.Type_class.t
#
val bin_read_t : 'a Bin_prot.Read.reader -> 'a t Bin_prot.Read.reader
#
val __bin_read_t__ : 'a Bin_prot.Read.reader -> (int -> 'a t) Bin_prot.Read.reader
#
val bin_reader_t : 'a Bin_prot.Type_class.reader -> 'a t Bin_prot.Type_class.reader
#
val bin_size_t : 'a Bin_prot.Size.sizer -> 'a t Bin_prot.Size.sizer
#
val bin_write_t : 'a Bin_prot.Write.writer -> 'a t Bin_prot.Write.writer
#
val bin_writer_t : 'a Bin_prot.Type_class.writer -> 'a t Bin_prot.Type_class.writer
end