def HMap.del.go

bend-kit-collections@0.1.4.1 · hmap.bend:172

import bend-kit-collections@0.1.4.1/hmap.bend as Hmap
import Base

172def HMap.del.go(
173  ~K: Data, ~V: Data, ~eq: K -> K -> Bool,
174  +n: Nat, +mask: U32, m: HMap<K, V>, +hash: U32, +k: K
175) -> HMap<K, V>:
176  match n:
177    case 0n:
178      match m:
179        case HNil{}:
180          HNil{}
181        case HLeaf{oldhash, entries}:
182          HMap.leaf(K, V, oldhash, HMap.entries.del(~K, ~V, ~eq, entries, k))
183        case HBranch{lo, hi}:
184          HBranch{lo, hi}
185    case 1n+p:
186      match m:
187        case HNil{}:
188          HNil{}
189        case HLeaf{+oldhash, +entries}:
190          HMap.bool(HMap<K, V>, U32.is_eq(oldhash, hash),
191            u => HMap.leaf(K, V, oldhash, HMap.entries.del(~K, ~V, ~eq, entries, k)),
192            u => HLeaf{oldhash, entries})
193        case HBranch{+lo, +hi}:
194          HMap.bool(HMap<K, V>, U32.is_eq((hash .&. mask : U32), 0),
195            u => HMap.join(K, V, HMap.del.go(~K, ~V, ~eq, p, (mask << 1n : U32), lo, hash, k), hi),
196            u => HMap.join(K, V, lo, HMap.del.go(~K, ~V, ~eq, p, (mask << 1n : U32), hi, hash, k)))

Uses (11)

Used by (3)