def OMap.rot_hi

bend-kit-collections@0.1.4.1 · omap.bend:96

import bend-kit-collections@0.1.4.1/omap.bend as Omap
import Base

96# The lo side is too heavy: move weight toward hi.
97def OMap.rot_hi(
98  -K: Data, -V: Data, k: K, v: V, lo: OMap<K, V>, hi: OMap<K, V>
99) -> OMap<K, V>:
100  match lo:
101    case OTip{}:
102      OMap.bin(K, V, k, v, OTip{}, hi)
103    case OBin{s, lk, lv, +ll, +lh}:
104      OMap.rot_hi.pick(K, V,
105        U32.is_lt((OMap.size(K, V, lh) + 1 : U32),
106          (2 * (OMap.size(K, V, ll) + 1) : U32)),
107        k, v, lk, lv, ll, lh, hi)

Uses (8)

Used by (3)