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

Uses (9)

Used by (3)