def tick.got
bend-kit-runner@0.13.0.1 · runner.bend:1591
import bend-kit-runner@0.13.0.1/runner.bend as Runner
import Base
import bend-kit-bytes@0.3.3.0/bytes.bend as Bytes
import bend-kit-retry@0.3.0.0/retry.bend as Retry
1591
1592def tick.got(~A: Data, ~penc: A -> Bytes.Bytes, ~target: A -> String, ~work: A -> IO(Retry.Outcome), x: Runner<A> & Maybe<&1, Msg<A>>, +ran: Bool, +left: Nat,
1593 err: Out(Unit), next: Claimed(A) -> IO(Runner<A> & Out(Bool))) -> IO(Runner<A> & Out(Bool)):
1594 (r, m) = x
1595 match m:
1596 case None{}:
1597 IO.pure(Runner<A> & Out(Bool), (r, tick.ran(err, ran)))
1598 case Some{msg}:
1599 do IO<Runner<A> & Out(Bool)>:
1600 +now : Nat <- clock()
1601 rnd : Out(U32) <- IO.random_u32()
1602 handle(~A, ~penc, msg, now, random(rnd), r, err, (r2 => more => e2 =>
1603 IO.bind(Claimed(A), Runner<A> & Out(Bool), claim(~A, ~penc, ~target, ~work, Nat.add(left, more), now, r2), k2 => next(merged(A, e2, k2)))))