def par_map.array.go

bend-kit-concurrency@0.2.0.0 · concurrency.bend:114

import bend-kit-concurrency@0.2.0.0/concurrency.bend as Concurrency
import Base

114# An Array is a balanced tree, so each ANode above depth d is a parallel call.
115def par_map.array.go(~A: Type, ~B: Type, ~f: A -> B, a: Array<A>, d: Nat) -> Array<B>:
116  match a d:
117    case ALeaf{x} _:
118      ALeaf{f(x)}
119    case ANode{xs, ys} 0n:
120      ANode{par_map.array.go(~A, ~B, ~f, xs, 0n), par_map.array.go(~A, ~B, ~f, ys, 0n)}
121    case ANode{xs, ys} 1n+ +p:
122      lo hi = par_map.array.go(~A, ~B, ~f, xs, p) par_map.array.go(~A, ~B, ~f, ys, p)
123      ANode{lo, hi}

Uses (2)

Used by (1)