1 import Base 2 import ./queue.bend as K 3 import ./types/queue.bend as E 4 5 # Single-threaded queue API; storage and algorithms are shared with queue. 6 def new(~T: Data) -> K.Queue: 7 K.new(~T) 8 9 def qsize(~T: Data, q: K.Queue) -> K.Queue & Nat: 10 K.length(~T, q) 11 12 def put(~T: Data, q: K.Queue, x: T) -> K.Queue: 13 K.enqueue(~T, q, x) 14 15 def get(~T: Data, q: K.Queue) -> K.Queue & Result<&2, &2, E.Error, T>: 16 K.dequeue(~T, q) 17 18 def peek(~T: Data, q: K.Queue) -> K.Queue & Result<&2, &2, E.Error, T>: 19 K.peek(~T, q) 20 21 def to_list(~T: Data, q: K.Queue) -> K.Queue & List<&2, T>: 22 K.to_list(~T, q)