def pair_loop
bendtorch-core@0.1.0.0 · src/tensor/contracts/fold.bend:66
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
66def pair_loop(~O: Data, ~g: O -> F32 -> F32 -> F32 -> F32, ~P: Data, ~ia: P -> Nat -> Nat, ~ib: P -> Nat -> Nat,
67 fuel: Nat, +operation: O, +plan: P, +cursor: Nat, left: Core.Dynamic, right: Core.Dynamic, accumulator: F32) ->
68 (Core.Dynamic & Core.Dynamic) & Result<&2, &1, Core.Error, F32>:
69 match fuel:
70 case 0n:
71 ((left, right), Done{accumulator})
72 case 1n+rest:
73 pair_left(~O, ~g, operation, U32.from_nat(ib(plan, cursor)),
74 left => right => value => pair_loop(~O, ~g, ~P, ~ia, ~ib, rest, operation, plan, 1n+cursor, left, right, value),
75 right, accumulator, Core.read_dynamic(left, U32.from_nat(ia(plan, cursor))))