def step

bend-collections@1.0.0.0 · src/containers/deque.bend:126

import bend-collections@1.0.0.0/src/containers/deque.bend as Deque
import Base
import bend-collections@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))

Uses (16)

Used by (1)