package core.heap
Heap :: struct (T: type_expr) { data: [..] T compare: (T, T) -> i32 }
Heap.empty :: macro (heap: &Heap) -> #auto
Heap.init :: (heap: &Heap, cmp: (heap.T, heap.T) -> i32) -> void
Heap.insert :: (heap: &Heap, v: heap.T) -> void
Heap.make :: ($T: type_expr, cmp: (T, T) -> i32) -> Heap(T)
Heap.peek_top :: (heap: &Heap) -> ? heap.T
Heap.remove :: macro (heap: &Heap, cond: Code) -> ? heap.T
Heap.remove_top :: (heap: &Heap) -> ? heap.T