library(queues)
This module provides an implementation of queues, where you can
empty_queue(
?Queue)
singleton_queue(
?X,
?Queue)
portray_queue(
+Queue)
is_queue(
Queue)
has been established,
as by user:portray(Q) :- is_queue(Q), !, portray_queue(Q)
.
it is also meant to work however it is called.
is_queue(
+Queue)
queue_length(
Queue, _)
.
queue_head(
+Queue,
-Head)
queue_tail(
?Queue,
?Tail)
queue_cons(
?Head,
?Tail,
?Queue)
queue_cons(+Head, +Q0, -Q) adds Head to Q0 giving Q queue_cons(-Head, -Q, +Q0) removes Head from Q0 giving Q
queue_last(
?Last,
?Queue)
queue_last(
+Fore,
+Last,
-Queue)
queue_cons/3
, and it side-effects Fore,
again unlike queue_cons/3
.
append_queue(
?List,
?Queue0,
?Queue)
append_queue([a,b,c], Queue[d,e], Queue[a,b,c,d,e])
. Use
append_queue([+X1,...,+Xn], +Q0, -Q) to add X1,...,Xn to Q0 giving Q append_queue([-X1,...,-Xn], -Q, +Q0) to take X1...Xn from Q0 giving Q
The cost is O(n) and the operation is pure.
queue_append(
+Queue0,
+List,
-Queue)
append_queue(Queue[a,b,c], [d,e], Queue[a,b,c,d,e])
.
This is like queue_last/3
; it side-effects Queue0.
list_queue(
?List,
?Queue)
list_queue/2
and queue_list/2
are the same except for argument order.
queue_list(
?Queue,
?List)
queue_list/2
and list_queue/2
are the same except for argument order.
queue_length(
?Queue,
?Length)
queue_member(
?Element,
+Queue)
queue_member/2
because it is prepared to enumerate Elements.
queue_memberchk(
+Element,
+Queue)
map_queue(
:Pred,
+Queue[X1,...,Xn])
map_queue(
:Pred,
+Queue[X1,...,Xn],
?Queue[Y1,...,Yn])
map_queue_list(
:Pred,
?Queue[X1,...,Xn],
?[Y1,...,Yn])
map_list_queue(
:Pred,
?[X1,...,Xn],
?Queue[Y1,...,Yn])
some_queue(
:Pred,
+Queue[X1,...,Xn])
somechk_queue/2
is to some_queue/2
as memberchk/2
is to member/2
; you are more likely to want somechk_queue/2
.
This acts on backtracking like member/2
; Queue should be proper.
some_queue(
:Pred,
+Queue[X1,...,Xn],
?Queue[Y1,...,Yn])
somechk_queue(
:Pred,
+Queue[X1,...,Xn])
memberchk/2
).
somechk_queue(
:Pred,
+Queue[X1,...,Xn],
?Queue[Y1,...,Yn])
memberchk/2
).