def par_reduce.array.go
bend-kit-concurrency@0.2.0.0 · concurrency.bend:129
import bend-kit-concurrency@0.2.0.0/concurrency.bend as Concurrency
import Base
129def par_reduce.array.go(~A: Type, ~f: A -> A -> A, a: Array<A>, d: Nat) -> A:
130 match a d:
131 case ALeaf{x} _:
132 x
133 case ANode{xs, ys} 0n:
134 f(par_reduce.array.go(~A, ~f, xs, 0n), par_reduce.array.go(~A, ~f, ys, 0n))
135 case ANode{xs, ys} 1n+ +p:
136 lo hi = par_reduce.array.go(~A, ~f, xs, p) par_reduce.array.go(~A, ~f, ys, p)
137 f(lo, hi)