def loop
bendtorch-core@0.1.0.0 · src/tensor/contracts/fold.bend:30
import bendtorch-core@0.1.0.0/src/tensor/contracts/fold.bend as Fold
import Base
import bendtorch-core@0.1.0.0/src/tensor/core.bend as Core
30def loop(~O: Data, ~g: O -> F32 -> F32 -> F32, ~P: Data, ~ia: P -> Nat -> Nat, ~keep: P -> Nat -> Bool,
31 fuel: Nat, +operation: O, +plan: P, +cursor: Nat, input: Core.Dynamic, accumulator: F32) ->
32 Core.Dynamic & Result<&2, &1, Core.Error, F32>:
33 match fuel:
34 case 0n:
35 (input, Done{accumulator})
36 case 1n+rest:
37 step(~O, ~g, operation, keep(plan, cursor), input => value => loop(~O, ~g, ~P, ~ia, ~keep, rest, operation, plan, 1n+cursor, input, value),
38 accumulator, Core.read_dynamic(input, U32.from_nat(ia(plan, cursor))))