src/containers/queue.bend checks
raw source on the hub · import 0xe4067e0d858024083f36a7abe7281e89/src/containers/queue.bend as Queue
2 imports
import Base import ./types/queue.bend as E
Types
type Queue source · line 7 · raw
@-T:Data -> Type
Two-list FIFO queue: front ++ reverse(back). Reverse back only when front is empty. Enqueue/dequeue/peek are amortized O(1) on consumed histories. length is cached; to_list is O(n). Independent of the deque and DLL.
QU@-T:Data -> @front:List<&2, T> -> @back:List<&2, T> -> @count:Nat -> Queue<T>
Templates
template new source · line 10 · raw
@-T:Data -> Queue<T>
template length source · line 13 · raw
@-T:Data -> @q:Queue<T> -> Pair(Queue<T>, Nat)
template enqueue source · line 17 · raw
@-T:Data -> @q:Queue<T> -> @x:T -> Queue<T>
template ready source · line 21 · raw
@-T:Data -> @q:Queue<T> -> Queue<T>
template dequeue_ready source · line 28 · raw
@-T:Data -> @q:Queue<T> -> Pair(Queue<T>, Result<&2, &2, 0xe4067e0d858024083f36a7abe7281e89/src/containers/types/queue.Error, T>)
template peek_ready source · line 35 · raw
@-T:Data -> @q:Queue<T> -> Pair(Queue<T>, Result<&2, &2, 0xe4067e0d858024083f36a7abe7281e89/src/containers/types/queue.Error, T>)
template dequeue source · line 42 · raw
@-T:Data -> @q:Queue<T> -> Pair(Queue<T>, Result<&2, &2, 0xe4067e0d858024083f36a7abe7281e89/src/containers/types/queue.Error, T>)
template peek source · line 45 · raw
@-T:Data -> @q:Queue<T> -> Pair(Queue<T>, Result<&2, &2, 0xe4067e0d858024083f36a7abe7281e89/src/containers/types/queue.Error, T>)
template to_list source · line 48 · raw
@-T:Data -> @q:Queue<T> -> Pair(Queue<T>, List<&2, T>)
template obs_nat source · line 54 · raw
@-T:Data -> @r:Pair(Queue<T>, Nat) -> Pair(Queue<T>, 0xe4067e0d858024083f36a7abe7281e89/src/containers/types/queue.Obs<T>)
template obs_item source · line 58 · raw
@-T:Data -> @r:Pair(Queue<T>, Result<&2, &2, 0xe4067e0d858024083f36a7abe7281e89/src/containers/types/queue.Error, T>) -> Pair(Queue<T>, 0xe4067e0d858024083f36a7abe7281e89/src/containers/types/queue.Obs<T>)
template obs_list source · line 62 · raw
@-T:Data -> @r:Pair(Queue<T>, List<&2, T>) -> Pair(Queue<T>, 0xe4067e0d858024083f36a7abe7281e89/src/containers/types/queue.Obs<T>)
template step source · line 66 · raw
@-T:Data -> @q:Queue<T> -> @op:0xe4067e0d858024083f36a7abe7281e89/src/containers/types/queue.Op<T> -> Pair(Queue<T>, 0xe4067e0d858024083f36a7abe7281e89/src/containers/types/queue.Obs<T>)
template record source · line 79 · raw
@-T:Data -> @acc:List<&2, 0xe4067e0d858024083f36a7abe7281e89/src/containers/types/queue.Obs<T>> -> @r:Pair(Queue<T>, 0xe4067e0d858024083f36a7abe7281e89/src/containers/types/queue.Obs<T>) -> Pair(Queue<T>, List<&2, 0xe4067e0d858024083f36a7abe7281e89/src/containers/types/queue.Obs<T>>)
template step_acc source · line 83 · raw
@-T:Data -> @op:0xe4067e0d858024083f36a7abe7281e89/src/containers/types/queue.Op<T> -> @st:Pair(Queue<T>, List<&2, 0xe4067e0d858024083f36a7abe7281e89/src/containers/types/queue.Obs<T>>) -> Pair(Queue<T>, List<&2, 0xe4067e0d858024083f36a7abe7281e89/src/containers/types/queue.Obs<T>>)
template run_acc source · line 87 · raw
@-T:Data -> @ops:List<&2, 0xe4067e0d858024083f36a7abe7281e89/src/containers/types/queue.Op<T>> -> @st:Pair(Queue<T>, List<&2, 0xe4067e0d858024083f36a7abe7281e89/src/containers/types/queue.Obs<T>>) -> Pair(Queue<T>, List<&2, 0xe4067e0d858024083f36a7abe7281e89/src/containers/types/queue.Obs<T>>)
template finish source · line 94 · raw
@-T:Data -> @st:Pair(Queue<T>, List<&2, 0xe4067e0d858024083f36a7abe7281e89/src/containers/types/queue.Obs<T>>) -> Pair(Queue<T>, List<&2, 0xe4067e0d858024083f36a7abe7281e89/src/containers/types/queue.Obs<T>>)
template run source · line 98 · raw
@-T:Data -> @ops:List<&2, 0xe4067e0d858024083f36a7abe7281e89/src/containers/types/queue.Op<T>> -> @q:Queue<T> -> Pair(Queue<T>, List<&2, 0xe4067e0d858024083f36a7abe7281e89/src/containers/types/queue.Obs<T>>)