deques

This library implements double-ended queues, deques. The queue representation should be regarded as an opaque term and only accessed using this library predicates.

API documentation

Open the ../../apis/library_index.html#deques link in a web browser.

Loading

To load all entities in this library, load the loader.lgt file:

| ?- logtalk_load(deques(loader)).

Testing

To test this library predicates, load the tester.lgt file:

| ?- logtalk_load(deques(tester)).

Usage

To create a new deque, use the new/1 predicate:

| ?- deque::new(Deque).
Deque = ...
yes

Elements can be added and removed both at the front and at the back of the deque using the push_front/3, push_back/3, pop_front/3, and pop_back/3, predicates. For example:

| ?- deque::(as_deque([1,2,3], Deque0), push_front(0, Deque0, Deque)).
Deque0 = ...,
Deque = ...
yes

We can also peek at the front and back of the deque using the peek_front/2 and peek_back/2 predicates. For example:

| ?- deque::(as_deque([1,2,3], Deque), peek_back(Deque, Element)).
Deque = ...,
Element = 3
yes

Mapping a closure over all elements of a deque can be done using the map/2 and map/3 predicates. For example:

| ?- deque::(as_deque([1,2,3], Deque), map(write, Deque)).
123
Deque = ...
yes

For details on these and other provided predicates, consult the library API documentation.