def merge_go

mylsm-lsm-store@0.3.2.0 · src/SortedRun.bend:209

import mylsm-lsm-store@0.3.2.0/src/SortedRun.bend as SortedRun
import Base
import mylsm-lsm-store@0.3.2.0/src/MemTable.bend as MemTable

209def merge_go(
210  fuel: Nat,
211  state: List<&2, MemTable.Entry> & List<&2, MemTable.Entry> & List<&2, MemTable.Entry>
212) -> List<&2, MemTable.Entry>:
213  match fuel:
214    case 0n:
215      (acc, newer, older) = state
216      List.reverse.go(&2, MemTable.Entry, acc, List.append(&2, MemTable.Entry, newer, older))
217    case 1n+f:
218      (acc, newer, older) = state
219      match newer older:
220        case Nil{} Nil{}:
221          List.reverse(&2, MemTable.Entry, acc)
222        case Nil{} rest:
223          List.reverse.go(&2, MemTable.Entry, acc, rest)
224        case rest Nil{}:
225          List.reverse.go(&2, MemTable.Entry, acc, rest)
226        case Con{+nh, nt} Con{+oh, ot}:
227          merge_go(f, merge_step(entry_cmp(nh, oh), nh, nt, oh, ot, acc))

Uses (10)

Used by (1)