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# Searches newest-first entries under a structural recursion bound.
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))

Uses (11)

Used by (1)