def lookup.go
mylsm-lsm-store@0.6.0.1 · src/ByteMemTable.bend:244
import mylsm-lsm-store@0.6.0.1/src/ByteMemTable.bend as ByteMemTable
import Base
244
245def lookup.go(fuel: Nat, state: Search) -> Lookup:
246 match fuel:
247 case 0n:
248 match state:
249 case Search{_, entries, prefix, _}:
250 lookup.result(prefix, entries, None{}, False{})
251 case 1n+rest:
252 match state:
253 case Search{query, entries, prefix, order}:
254 match entries:
255 case Nil{}:
256 lookup.result(prefix, Nil{}, None{}, False{})
257 case Con{Entry{key, val}, tail}:
258 match order:
259 case EQ{}:
260 lookup.hit.value(val, prefix, key, tail)
261 case LT{}:
262 lookup.go(rest, lookup.advance.state(query, key, val, tail, prefix))
263 case GT{}:
264 lookup.go(rest, lookup.advance.state(query, key, val, tail, prefix))