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{})