Bits.next.go: def of bend-kit-bits@0.1.0.1 Import: import bend-kit-bits@0.1.0.1/bits.bend as Bits Lines 214-224 of bend-kit-bits@0.1.0.1/bits.bend: https://jend.leeeet.dev/read.txt?path=bend-kit-bits@0.1.0.1/bits.bend&start_line=214&end_line=224 import Base # RFC 1951 ยง3.2.2: next[l] = (next[l-1] + count[l-1]) << 1. r holds count[l-1]; left counts # the codes of length l - 1 still free, and a negative left means the lengths over-subscribe. def next.go(k: Nat, +l: U32, +code: U32, +left: U32, +ok: Bool, n: Array, r: Array & U32) -> Array & Bool: match k: case 0n: (c, v) = r (n, ok) case 1n+p: (c, +v) = r +nx = ((code + v) << 1n : U32) next.go(p, (l + 1 : U32), nx, ((left - v) * 2 : U32), Bool.and(ok, U32.is_le(v, left)), Array.set(U32, n, l, nx), Array.get(U32, c, l)) Uses (14): https://jend.leeeet.dev/definition.txt?path=Base/base.bend&name=Array https://jend.leeeet.dev/definition.txt?path=Base/base.bend&name=Array.get https://jend.leeeet.dev/definition.txt?path=Base/base.bend&name=Array.set https://jend.leeeet.dev/definition.txt?path=Base/base.bend&name=Bool https://jend.leeeet.dev/definition.txt?path=Base/base.bend&name=Bool.and https://jend.leeeet.dev/definition.txt?path=Base/base.bend&name=Nat https://jend.leeeet.dev/definition.txt?path=Base/base.bend&name=Pair https://jend.leeeet.dev/definition.txt?path=Base/base.bend&name=Sigma https://jend.leeeet.dev/definition.txt?path=Base/base.bend&name=U32 https://jend.leeeet.dev/definition.txt?path=Base/base.bend&name=U32.add https://jend.leeeet.dev/definition.txt?path=Base/base.bend&name=U32.is_le https://jend.leeeet.dev/definition.txt?path=Base/base.bend&name=U32.mul https://jend.leeeet.dev/definition.txt?path=Base/base.bend&name=U32.shln https://jend.leeeet.dev/definition.txt?path=Base/base.bend&name=U32.sub