def lookup.length.go
mylsm-lsm-store@0.6.0.1 · src/ByteMemTable.bend:385
import mylsm-lsm-store@0.6.0.1/src/ByteMemTable.bend as ByteMemTable
import Base
385def lookup.length.go(fuel: Nat, state: LengthSearch) -> LengthLookup:
386 match fuel:
387 case 0n:
388 match state:
389 case LengthSearch{_, entries, prefix, _}:
390 lookup.length.result(prefix, entries, LengthAbsent{}, False{})
391 case 1n+rest:
392 match state:
393 case LengthSearch{query, entries, prefix, order}:
394 match entries:
395 case Nil{}:
396 lookup.length.result(prefix, Nil{}, LengthAbsent{}, False{})
397 case Con{Entry{key, val}, tail}:
398 match order:
399 case EQ{}: lookup.length.hit(prefix, key, tail, val)
400 case LT{}:
401 lookup.length.go(rest,
402 lookup.length.advance(query, key, val, tail, prefix))
403 case GT{}:
404 lookup.length.go(rest,
405 lookup.length.advance(query, key, val, tail, prefix))