/** * Reduces an `Collection>` to a single `Effect`, working * in parallel. * * @tsplus static effect/core/io/Effect.Ops reduceAllPar */ export function reduceAllPar( a: Effect, as: Collection>, f: (acc: A, a: A) => A ): Effect { return Effect.suspendSucceed( Effect.mergeAllPar>( Collection.of(a).concat(as), Maybe.none, (acc, elem) => Maybe.some( acc.fold( () => elem, (a) => f(a, elem) ) ) ).map((option) => option.getOrElse(() => { throw new Error("Bug") }) ) ) }