src/containers/priority_queue.bend

bend-collections-laws-containers@1.0.0.0 · 25 lines · 0 definitions

1import Base
2import bend-collections-laws-containers@1.0.0.0/src/containers/binary_heap.bend as K
3import bend-collections-laws-containers@1.0.0.0/src/containers/types/binary_heap.bend as E
4
5# Single-threaded queue API; storage and algorithms are shared with binary_heap.
6def new(~A: Data) -> K.Heap<A>:
7  K.new(~A)
8
9def qsize(~A: Data, h: K.Heap<A>) -> K.Heap<A> & Nat:
10  K.length(~A, h)
11
12def put(~A: Data, ~cmp: A -> A -> Cmp, h: K.Heap<A>, x: A) -> K.Heap<A>:
13  K.push(~A, ~cmp, h, x)
14
15def peek(~A: Data, h: K.Heap<A>) -> K.Heap<A> & Result<&2, &2, E.Error, A>:
16  K.peek(~A, h)
17
18def get(~A: Data, ~cmp: A -> A -> Cmp, h: K.Heap<A>) -> K.Heap<A> & Result<&2, &2, E.Error, A>:
19  K.pop(~A, ~cmp, h)
20
21def from_list(~A: Data, ~cmp: A -> A -> Cmp, xs: List<&2, A>) -> K.Heap<A>:
22  K.from_list(~A, ~cmp, xs)
23
24def to_sorted_list(~A: Data, ~cmp: A -> A -> Cmp, h: K.Heap<A>) -> K.Heap<A> & List<&2, A>:
25  K.to_sorted_list(~A, ~cmp, h)