def hash_idxs_par_go
mylsm-lsm-store@0.6.0.1 · src/Sstable.bend:308
import mylsm-lsm-store@0.6.0.1/src/Sstable.bend as Sstable
import Base
import mylsm-lsm-store@0.6.0.1/src/MemTable.bend as MemTable
308
309def hash_idxs_par_go(+fuel: Nat, +entries: List<&2, MemTable.Entry>, +size: Nat) -> List<&2, Nat>:
310 match fuel:
311 case 0n:
312 hash_idxs_seq(entries, size)
313 case 1n+f:
314 match entries:
315 case Nil{}:
316 Nil{}
317 case Con{MemTable.Entry{key, val}, Nil{}}:
318 key_idxs(key, size)
319 case Con{_, Con{_, _}}:
320 +half = Nat.div(List.length(&2, MemTable.Entry, entries), 2n)
321 left right = hash_idxs_par_go(f, List.take(&2, MemTable.Entry, entries, half), size) hash_idxs_par_go(f, List.drop(&2, MemTable.Entry, entries, half), size)
322 List.append(&2, Nat, left, right)