def step
bend-collections-laws-math@1.0.0.0 · src/containers/deque.bend:126
import bend-collections-laws-math@1.0.0.0/src/containers/deque.bend as Deque
import Base
import bend-collections-laws-math@1.0.0.0/src/containers/types/deque.bend as E
126def step(~T: Data, d: Deque<T>, op: E.Op<T>) -> Deque<T> & E.Obs<T>:
127 match op:
128 case E.Length{}:
129 obs_nat(~T, length(~T, d))
130 case E.PushFront{+x}:
131 (push_front(~T, d, x), E.OUnit{})
132 case E.PushBack{+x}:
133 (push_back(~T, d, x), E.OUnit{})
134 case E.PopFront{}:
135 obs_item(~T, pop_front(~T, d))
136 case E.PopBack{}:
137 obs_item(~T, pop_back(~T, d))
138 case E.PeekFront{}:
139 obs_item(~T, peek_front(~T, d))
140 case E.PeekBack{}:
141 obs_item(~T, peek_back(~T, d))
142 case E.ToList{}:
143 obs_list(~T, to_list(~T, d))