Concurrency.par_reduce.list.go: def of bend-kit-concurrency@0.2.0.0
Import: import bend-kit-concurrency@0.2.0.0/concurrency.bend as Concurrency
Lines 82-97 of bend-kit-concurrency@0.2.0.0/concurrency.bend: https://jend.leeeet.dev/read.txt?path=bend-kit-concurrency@0.2.0.0/concurrency.bend&start_line=82&end_line=97
import Base
def par_reduce.list.go(
~A: Data, ~f: A -> A -> A, d: Nat, +nl: Nat, +nr: Nat, +z: A, lr: List & List
) -> A:
match d:
case 0n:
(l, r) = lr
lo hi = fold(~A, ~f, l, z) fold(~A, ~f, r, z)
f(lo, hi)
case 1n+ +p:
(l, r) = lr
+hl = Nat.div(nl, 2n)
+hr = Nat.div(nr, 2n)
ls = split(A, l, hl)
rs = split(A, r, hr)
lo hi = par_reduce.list.go(~A, ~f, p, hl, Nat.sub(nl, hl), z, ls) par_reduce.list.go(~A, ~f, p, hr, Nat.sub(nr, hr), z, rs)
f(lo, hi)
Uses (8):
https://jend.leeeet.dev/definition.txt?path=Base/base.bend&name=List
https://jend.leeeet.dev/definition.txt?path=Base/base.bend&name=Nat
https://jend.leeeet.dev/definition.txt?path=Base/base.bend&name=Nat.div
https://jend.leeeet.dev/definition.txt?path=Base/base.bend&name=Nat.sub
https://jend.leeeet.dev/definition.txt?path=Base/base.bend&name=Pair
https://jend.leeeet.dev/definition.txt?path=Base/base.bend&name=Sigma
https://jend.leeeet.dev/definition.txt?path=bend-kit-concurrency@0.2.0.0/concurrency.bend&name=fold
https://jend.leeeet.dev/definition.txt?path=bend-kit-concurrency@0.2.0.0/concurrency.bend&name=split