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))