def trie.put
bend-kit-regex@0.8.0.0 · regex.bend:687
import bend-kit-regex@0.8.0.0/regex.bend as Regex
import Base
687
688def trie.put(-V: Data, fuel: Nat, t: Trie<V>, here: Bool, left: Bool, +n: U32, v: V) -> Trie<V>:
689 match fuel:
690 case 0n:
691 t
692 case 1n+f:
693 match t:
694 case TNode{x, lo, hi}:
695 match here:
696 case True{}:
697 TNode{Some{v}, lo, hi}
698 case False{}:
699 match left:
700 case True{}:
701 TNode{x, trie.put(V, f, lo, U32.is_eq(U32.shr(n), 1), U32.is_even(U32.shr(n)), U32.shr(n), v), hi}
702 case False{}:
703 TNode{x, lo, trie.put(V, f, hi, U32.is_eq(U32.shr(n), 1), U32.is_even(U32.shr(n)), U32.shr(n), v)}
704 case TTip{}:
705 match here:
706 case True{}:
707 TNode{Some{v}, TTip{}, TTip{}}
708 case False{}:
709 match left:
710 case True{}:
711 TNode{None{}, trie.put(V, f, TTip{}, U32.is_eq(U32.shr(n), 1), U32.is_even(U32.shr(n)), U32.shr(n), v), TTip{}}
712 case False{}:
713 TNode{None{}, TTip{}, trie.put(V, f, TTip{}, U32.is_eq(U32.shr(n), 1), U32.is_even(U32.shr(n)), U32.shr(n), v)}