queue(3)

MODULE
queue - Abstract Data Type for FIFO Queues

DESCRIPTION

This module implements FIFO queues in an efficient manner.

All operations has an amortised O(1) running time, except len/1, reverse/1, join/2 and split/2 that probably are O(n).

EXPORTS

cons(Item, Q1) -> Q2

    Types
        Item = term()
        Q1 = Q2 = queue()

    Inserts Item at the head of queue Q1. Returns the new queue Q2.

daeh(Q) -> Item

    The same as last(Q) and the opposite of head(Q).

from_list(L) -> queue()

    Types
        L = list()

    Returns a queue containing the items in L, in the same order - the head item of the list will be the head item of the queue.

head(Q) -> Item

    Types
        Item = term()
        Q = queue()

    Returns Item from the head of queue Q.

    Fails with reason empty if Q is empty.

in(Item, Q1) -> Q2

    Types
        Item = term()
        Q1 = Q2 = queue()

    Inserts Item at the tail of queue Q1. Returns a new queue Q2. This is the same as snoc(Q1, Item).

in_r(Item, Q1) -> Q2

    Types
        Item = term()
        Q1 = Q2 = queue()

    Inserts Item at the head of queue Q1. Returns a new queue Q2. This is the same as cons(Item, Q1).

init(Q1) -> Q2

    Types
        Item = term()
        Q1 = Q2 = queue()

    Returns a queue Q2 that is the result of removing the last item from Q1. This is the opposite of tail(Q1).

    Fails with reason empty if Q1 is empty.

is_empty(Q) -> true | false

    Types
        Q = queue()

    Tests if Q is empty and returns true if so and false otherwise.

join(Q1, Q2) -> Q3

    Types
        Q1 = Q2 = Q3 = queue()

    Returns a queue Q3 that is the result of joining Q1 and Q2 with Q1 before (at the head) Q2.

lait(Q1) -> Q2

    The same as init(Q1) and the opposite of tail(Q1).

last(Q) -> Item

    Types
        Item = term()
        Q = queue()

    Returns the last item of queue Q. This is the opposite of head(Q).

    Fails with reason empty if Q is empty.

len(Q) -> N

    Types
        Q = queue()
        N = integer()

    Calculates and returns the length of queue Q.

new() -> Q

    Types
        Q = queue()

    Returns an empty queue.

out(Q1) -> Result

    Types
        Result = {{value, Item}, Q2} | {empty, Q1}
        Q1 = Q2 = queue()

    Removes the head item from the queue Q1. Returns the tuple {{value, Item}, Q2}, where Item is the item removed and Q2 is the new queue. If Q1 is empty, the tuple {empty, Q1} is returned.

out_r(Q1) -> Result

    Types
        Result = {{value, Item}, Q2} | {empty, Q1}
        Q1 = Q2 = queue()

    Removes the last item from the queue Q1. Returns the tuple {{value, Item}, Q2}, where Item is the item removed and Q2 is the new queue. If Q1 is empty, the tuple {empty, Q1} is returned.

reverse(Q1) -> Q2

    Types
        Q1 = Q2 = queue()

    Returns a queue Q2 that contains the items of Q1 in the reverse order.

snoc(Q1, Item) -> Q2

    Types
        Item = term()
        Q1 = Q2 = queue()

    Inserts Item as the last item of queue Q1. Returns the new queue Q2. This is the opposite of cons(Item, Q1).

split(N, Q1) -> {Q2,Q3}

    Types
        N = integer()
        Q1 = Q2 = Q3 = queue()

    Splits Q1 into a queue Q2 of length N with items from the head end, and a queue Q3 with the rest of the items.

tail(Q1) -> Q2

    Types
        Item = term()
        Q1 = Q2 = queue()

    Returns a queue Q2 that is the result of removing the head item from Q1.

    Fails with reason empty if Q1 is empty.

to_list(Q) -> list()

    Types
        Q = queue()

    Returns a list of the items in the queue, with the head item of the queue as the head of the list.

AUTHORS
Claes Wikstrom - support@erlang.ericsson.se
Raimo Niskanen - support@erlang.ericsson.se