def Map.get.go

Base · base.bend:2920

import Base
2920def Map.get.go(-V: Data, node: Map<&2, V>, d: V, kb: String & Bool) -> Map<&2, V> & V:
2921  match node kb:
2922    case MNode{p, MTip{}, hi} Tuple{key2, False{}}:
2923      (MNode{p, MTip{}, hi}, d)
2924    case MNode{p, MLeaf{k, v}, hi} Tuple{key2, False{}}:
2925      Map.lo(&2, V, V, p, hi, Map.get.leaf(V, d, v, String.cmp(key2, k)))
2926    case MNode{p, MNode{+q, a, b}, hi} Tuple{key2, False{}}:
2927      Map.lo(&2, V, V, p, hi, Map.get.go(V, MNode{q, a, b}, d, Map.bit(key2, q)))
2928    case MNode{p, lo, MTip{}} Tuple{key2, True{}}:
2929      (MNode{p, lo, MTip{}}, d)
2930    case MNode{p, lo, MLeaf{k, v}} Tuple{key2, True{}}:
2931      Map.hi(&2, V, V, p, lo, Map.get.leaf(V, d, v, String.cmp(key2, k)))
2932    case MNode{p, lo, MNode{+q, a, b}} Tuple{key2, True{}}:
2933      Map.hi(&2, V, V, p, lo, Map.get.go(V, MNode{q, a, b}, d, Map.bit(key2, q)))
2934    case m _:
2935      (m, d)

Uses (10)

Used by (3)