.. index:: single: deque_protocol
.. _deque_protocol/0:

.. rst-class:: right

**protocol**

``deque_protocol``
==================

Extracted protocol entity

| **Availability:** 
|    ``logtalk_load(deques(loader))``

| **Author:** Paulo Moura
| **Version:** 1:0:0
| **Date:** 2026-02-08

| **Compilation flags:**
|    ``static``


| **Dependencies:**
|   (none)


| **Remarks:**
|    (none)

| **Inherited public predicates:**
|    (none)

.. contents::
   :local:
   :backlinks: top

Public predicates
-----------------

.. index:: empty/1
.. _deque_protocol/0::empty/1:

``empty/1``
^^^^^^^^^^^

True iff the deque is empty.

| **Compilation flags:**
|    ``static``

| **Template:**
|    ``empty(Deque)``
| **Mode and number of proofs:**
|    ``empty(+deque)`` - ``zero_or_one``


------------

.. index:: push_front/3
.. _deque_protocol/0::push_front/3:

``push_front/3``
^^^^^^^^^^^^^^^^

Adds an element to the front of the deque.

| **Compilation flags:**
|    ``static``

| **Template:**
|    ``push_front(Element,DequeIn,DequeOut)``
| **Mode and number of proofs:**
|    ``push_front(+term,+deque,-deque)`` - ``one``


------------

.. index:: push_back/3
.. _deque_protocol/0::push_back/3:

``push_back/3``
^^^^^^^^^^^^^^^

Adds an element to the back of the deque.

| **Compilation flags:**
|    ``static``

| **Template:**
|    ``push_back(Element,DequeIn,DequeOut)``
| **Mode and number of proofs:**
|    ``push_back(+term,+deque,-deque)`` - ``one``


------------

.. index:: pop_front/3
.. _deque_protocol/0::pop_front/3:

``pop_front/3``
^^^^^^^^^^^^^^^

Removes and returns the front element.

| **Compilation flags:**
|    ``static``

| **Template:**
|    ``pop_front(DequeIn,Element,DequeOut)``
| **Mode and number of proofs:**
|    ``pop_front(+deque,-term,-deque)`` - ``zero_or_one``


------------

.. index:: pop_back/3
.. _deque_protocol/0::pop_back/3:

``pop_back/3``
^^^^^^^^^^^^^^

Removes and returns the back element.

| **Compilation flags:**
|    ``static``

| **Template:**
|    ``pop_back(DequeIn,Element,DequeOut)``
| **Mode and number of proofs:**
|    ``pop_back(+deque,-term,-deque)`` - ``zero_or_one``


------------

.. index:: peek_front/2
.. _deque_protocol/0::peek_front/2:

``peek_front/2``
^^^^^^^^^^^^^^^^

Returns the front element without removing it.

| **Compilation flags:**
|    ``static``

| **Template:**
|    ``peek_front(Deque,Element)``
| **Mode and number of proofs:**
|    ``peek_front(+deque,-term)`` - ``zero_or_one``


------------

.. index:: peek_back/2
.. _deque_protocol/0::peek_back/2:

``peek_back/2``
^^^^^^^^^^^^^^^

Returns the back element without removing it.

| **Compilation flags:**
|    ``static``

| **Template:**
|    ``peek_back(Deque,Element)``
| **Mode and number of proofs:**
|    ``peek_back(+deque,-term)`` - ``zero_or_one``


------------

.. index:: length/2
.. _deque_protocol/0::length/2:

``length/2``
^^^^^^^^^^^^

Returns the number of elements in the deque.

| **Compilation flags:**
|    ``static``

| **Template:**
|    ``length(Deque,Length)``
| **Mode and number of proofs:**
|    ``length(+deque,-integer)`` - ``one``


------------

.. index:: map/2
.. _deque_protocol/0::map/2:

``map/2``
^^^^^^^^^

Applies a closure to all elements of a deque.

| **Compilation flags:**
|    ``static``

| **Template:**
|    ``map(Closure,Deque)``
| **Meta-predicate template:**
|    ``map(1,*)``
| **Mode and number of proofs:**
|    ``map(+callable,+deque)`` - ``zero_or_one``


------------

.. index:: map/3
.. _deque_protocol/0::map/3:

``map/3``
^^^^^^^^^

Applies a closure to all elements of a deque constructing a new deque.

| **Compilation flags:**
|    ``static``

| **Template:**
|    ``map(Closure,Deque,NewQueue)``
| **Meta-predicate template:**
|    ``map(2,*,*)``
| **Mode and number of proofs:**
|    ``map(+callable,+deque,?deque)`` - ``zero_or_one``


------------

.. index:: as_list/2
.. _deque_protocol/0::as_list/2:

``as_list/2``
^^^^^^^^^^^^^

Converts a deque to a list.

| **Compilation flags:**
|    ``static``

| **Template:**
|    ``as_list(Deque,List)``
| **Mode and number of proofs:**
|    ``as_list(+deque,-list)`` - ``one``


------------

.. index:: as_deque/2
.. _deque_protocol/0::as_deque/2:

``as_deque/2``
^^^^^^^^^^^^^^

Converts a list to a deque.

| **Compilation flags:**
|    ``static``

| **Template:**
|    ``as_deque(List,Deque)``
| **Mode and number of proofs:**
|    ``as_deque(+list,-deque)`` - ``one``


------------

Protected predicates
--------------------

(none)

Private predicates
------------------

(none)

Operators
---------

(none)

