def drain_go
bend-collections@1.0.0.0 · src/containers/binary_heap.bend:358
import bend-collections@1.0.0.0/src/containers/binary_heap.bend as BinaryHeap
import Base
358def drain_go(~A: Data, ~cmp: A -> A -> Cmp, fuel: Nat, +depth: Nat, st: Drain<A>) -> List<&2, A>:
359 match fuel st:
360 case _ DrDone{arr}:
361 burn(~A, arr)
362 case _ DrLast{arr, root}:
363 burn_cons(~A, root, arr)
364 case 0n DrMore{arr, root, m, last}:
365 burn_cons(~A, root, arr)
366 case 1n+f DrMore{arr, root, +m, last}:
367 Con{root, drain_go(~A, ~cmp, f, depth, drain_probe(~A, m, sift_down(~A, ~cmp, depth, m, 0, last, arr)))}