def merge_go
mylsm-lsm-store@0.6.0.1 · src/SortedRun.bend:223
import mylsm-lsm-store@0.6.0.1/src/SortedRun.bend as SortedRun
import Base
import mylsm-lsm-store@0.6.0.1/src/MemTable.bend as MemTable
223
224def merge_go(
225 fuel: Nat,
226 state: List<&2, MemTable.Entry> & List<&2, MemTable.Entry> & List<&2, MemTable.Entry>
227) -> List<&2, MemTable.Entry>:
228 match fuel:
229 case 0n:
230 (acc, newer, older) = state
231 List.reverse.go(&2, MemTable.Entry, acc, List.append(&2, MemTable.Entry, newer, older))
232 case 1n+f:
233 (acc, newer, older) = state
234 match newer older:
235 case Nil{} Nil{}:
236 List.reverse(&2, MemTable.Entry, acc)
237 case Nil{} rest:
238 List.reverse.go(&2, MemTable.Entry, acc, rest)
239 case rest Nil{}:
240 List.reverse.go(&2, MemTable.Entry, acc, rest)
241 case Con{+nh, nt} Con{+oh, ot}:
242 merge_go(f, merge_step(entry_cmp(nh, oh), nh, nt, oh, ot, acc))