def Map.seek.go
Base · base.bend:2822
import Base
2822def Map.seek.go(-a: Quant, -V: Kind(a), node: Map<a, V>, kb: String & Bool) ->
2823 Map<a, V> & String & Maybe<&2, String>:
2824 match node kb:
2825 case MNode{p, MTip{}, hi} Tuple{key, False{}}:
2826 (MNode{p, MTip{}, hi}, key, None{})
2827 case MNode{p, MLeaf{+k, v}, hi} Tuple{key, False{}}:
2828 (MNode{p, MLeaf{k, v}, hi}, key, Some{k})
2829 case MNode{p, MNode{+q, c, d}, hi} Tuple{key, False{}}:
2830 Map.lo(a, V, String & Maybe<&2, String>, p, hi, Map.seek.go(a, V, MNode{q, c, d}, Map.bit(key, q)))
2831 case MNode{p, lo, MTip{}} Tuple{key, True{}}:
2832 (MNode{p, lo, MTip{}}, key, None{})
2833 case MNode{p, lo, MLeaf{+k, v}} Tuple{key, True{}}:
2834 (MNode{p, lo, MLeaf{k, v}}, key, Some{k})
2835 case MNode{p, lo, MNode{+q, c, d}} Tuple{key, True{}}:
2836 Map.hi(a, V, String & Maybe<&2, String>, p, lo, Map.seek.go(a, V, MNode{q, c, d}, Map.bit(key, q)))
2837 case m Tuple{key, b}:
2838 (m, key, None{})