crow/col/deque.crow (source)

deque[t] record

(has non-public fields)

    Immutable double-ended queue.

    new[t] t deque(...a t array)

    Deque containing the given elements.

    to[t] t deque(a t array)

    to[t] t array(a t deque)

    is-empty[t] bool(a t deque)

    true iff a.size == 0.
    This is O(1).

    size[t] nat64(a t deque)

    Number of elements in the deque.
    This is O(n).

    ~[t] t deque(a t deque, value t)

    Pushes an element on the right.

    ~[t] t deque(value t, a t deque)

    Pushes an element on the left.

    pop-left[t] (t, t deque) tuple2?(a t deque)

    Remove a value from the left.
    Returns an empty option iff a is empty.

    pop-right[t] (t deque, t) tuple2?(a t deque)

    Remove a value from the right.
    Returns an empty option iff a is empty.

    iterate[t] bool(a t deque, f mut bool(t))