def Map.pop.go

Base · base.bend:2975

import Base
2975def Map.pop.go(-a: Quant, -V: Kind(a), node: Map<a, V>, kb: String & Bool) ->
2976  Map<a, V> & Maybe<a, V>:
2977  match node kb:
2978    case MNode{p, MTip{}, hi} Tuple{key, False{}}:
2979      (hi, None{})
2980    case MNode{p, MLeaf{k, v}, hi} Tuple{key, False{}}:
2981      Map.pop.lo(a, V, p, hi, Map.pop.leaf(a, V, v, String.cmp(key, k)))
2982    case MNode{p, MNode{+q, c, d}, hi} Tuple{key, False{}}:
2983      Map.pop.lo(a, V, p, hi, Map.pop.go(a, V, MNode{q, c, d}, Map.bit(key, q)))
2984    case MNode{p, lo, MTip{}} Tuple{key, True{}}:
2985      (lo, None{})
2986    case MNode{p, lo, MLeaf{k, v}} Tuple{key, True{}}:
2987      Map.pop.hi(a, V, p, lo, Map.pop.leaf(a, V, v, String.cmp(key, k)))
2988    case MNode{p, lo, MNode{+q, c, d}} Tuple{key, True{}}:
2989      Map.pop.hi(a, V, p, lo, Map.pop.go(a, V, MNode{q, c, d}, Map.bit(key, q)))
2990    case m _:
2991      (m, None{})

Uses (11)

Used by (3)