def step
bend-collections@1.0.0.0 · src/containers/queue.bend:66
import bend-collections@1.0.0.0/src/containers/queue.bend as Queue
import Base
import bend-collections@1.0.0.0/src/containers/types/queue.bend as E
66def step(~T: Data, q: Queue<T>, op: E.Op<T>) -> Queue<T> & E.Obs<T>:
67 match op:
68 case E.Length{}:
69 obs_nat(~T, length(~T, q))
70 case E.Enqueue{+x}:
71 (enqueue(~T, q, x), E.OUnit{})
72 case E.Dequeue{}:
73 obs_item(~T, dequeue(~T, q))
74 case E.Peek{}:
75 obs_item(~T, peek(~T, q))
76 case E.ToList{}:
77 obs_list(~T, to_list(~T, q))