def step
bend-collections@1.0.0.0 · src/containers/binary_heap.bend:399
import bend-collections@1.0.0.0/src/containers/binary_heap.bend as BinaryHeap
import Base
import bend-collections@1.0.0.0/src/containers/types/binary_heap.bend as E
399def step(~A: Data, ~cmp: A -> A -> Cmp, h: Heap<A>, op: E.Op<A>) -> Heap<A> & E.Obs<A>:
400 match op:
401 case E.Length{}:
402 obs_nat(~A, length(~A, h))
403 case E.Push{x}:
404 (push(~A, ~cmp, h, x), E.OUnit{})
405 case E.Peek{}:
406 obs_item(~A, peek(~A, h))
407 case E.Pop{}:
408 obs_item(~A, pop(~A, ~cmp, h))
409 case E.FromList{xs}:
410 replace(~A, ~cmp, h, xs)
411 case E.ToSortedList{}:
412 obs_list(~A, to_sorted_list(~A, ~cmp, h))