def Array.get.go

Base · base.bend:2584

import Base
2584def Array.get.go(-T: Data, a: Array<T>, n: U32, +i: U32, z: Bool) -> Array<T> & T:
2585  match a z:
2586    case ALeaf{+x} _:
2587      (ALeaf{x}, x)
2588    case ANode{xs, ys} True{}:
2589      +h = U32.shr(n)
2590      Array.swap.lo(T, ys, Array.get.go(T, xs, h, i, U32.is_lt(i, U32.shr(h))))
2591    case ANode{xs, ys} False{}:
2592      +h = U32.shr(n)
2593      +j = U32.sub(i, h)
2594      Array.swap.hi(T, xs, Array.get.go(T, ys, h, j, U32.is_lt(j, U32.shr(h))))

Uses (10)

Used by (36)