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# fuel: a U32 key has at most 32 bits.
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)}

Uses (8)

Used by (1)