def step
bend-collections@1.0.0.0 · src/containers/stack.bend:52
import bend-collections@1.0.0.0/src/containers/stack.bend as Stack
import Base
import bend-collections@1.0.0.0/src/containers/types/stack.bend as E
52def step(~T: Data, q: Stack<T>, op: E.Op<T>) -> Stack<T> & E.Obs<T>:
53 match op:
54 case E.Length{}:
55 obs_nat(~T, length(~T, q))
56 case E.Push{+x}:
57 (push(~T, q, x), E.OUnit{})
58 case E.Pop{}:
59 obs_item(~T, pop(~T, q))
60 case E.Peek{}:
61 obs_item(~T, peek(~T, q))
62 case E.ToList{}:
63 obs_list(~T, to_list(~T, q))