def runqa
bend-kit-regex@0.8.0.0 · regex.bend:2062
import bend-kit-regex@0.8.0.0/regex.bend as Regex
import Base
2062
2063def runqa(+fuel: Nat, r: Qa, +len: U32, +prog: Trie<Inst>, +cfuel: Nat, +init: List<&2, Maybe<&2, U32>>, +start: Maybe<&2, List<&2, Inst>>, +asc: Maybe<&2, Asc>, +any: Bool, +slots: Nat, +cap: U32) -> Array<U32> & Maybe<&2, List<&2, Maybe<&2, U32>>>:
2064 match fuel:
2065 case 0n:
2066 Qa{a, tab, keys, n, id, i, d, ar, same} = r
2067 (a, None{})
2068 case 1n+f:
2069 Qa{a, tab, +keys, +n, +id, +i, d, ar, same} = r
2070 match d:
2071 case DEnd{}:
2072 qa.end.status(ar, a, prog, any)
2073 case Dc{+c, +w}:
2074 match ar:
2075 case QDone{best}:
2076 (a, Some{best})
2077 case QIdle{ar}:
2078 runqa(f, qa.from(rq.of(rb.idle(asc, a, len, (i + w : U32), c, prog, cfuel, init, start, any), tab, keys, n, cap), ar, init, cap), len, prog, cfuel, init, start, asc, any, slots, cap)
2079 case QLive{ar}:
2080 +j = (i + w : U32)
2081 runqa(f, qa.spin(qa.step(dec(a, len, j), j, tab, keys, n, id, ar, c, prog, cfuel, init, start, any, slots, cap), f, len, cap), len, prog, cfuel, init, start, asc, any, slots, cap)
2082 case QPlain{st}:
2083 runb(Nat.add(f, 1n), Rb{a, i, Dc{c, w}, st}, len, prog, cfuel, init, start, asc, any)