Hyperlinkv0.8.0-beta.28

Effect

Effect.partitionconsteffect/Effect.ts:556
<A, B, E, R>(
  f: (a: A, i: number) => Effect<B, E, R>,
  options?: { readonly concurrency?: Concurrency | undefined }
): (
  elements: Iterable<A>
) => Effect<[excluded: Array<E>, satisfying: Array<B>], never, R>
<A, B, E, R>(
  elements: Iterable<A>,
  f: (a: A, i: number) => Effect<B, E, R>,
  options?: { readonly concurrency?: Concurrency | undefined }
): Effect<[excluded: Array<E>, satisfying: Array<B>], never, R>

Applies an effectful function to each element and partitions failures and successes.

Details

The returned tuple is [excluded, satisfying], where excluded contains all failures and satisfying contains all successes.

This function runs every effect and never fails. Use concurrency to control parallelism.

Example (Separating successes and failures)

import { Effect } from "effect"

const program = Effect.partition([0, 1, 2, 3], (n) =>
  n % 2 === 0 ? Effect.fail(`${n} is even`) : Effect.succeed(n)
)

Effect.runPromise(program).then(console.log)
// [ ["0 is even", "2 is even"], [1, 3] ]
collecting
Source effect/Effect.ts:55611 lines
export const partition: {
  <A, B, E, R>(
    f: (a: A, i: number) => Effect<B, E, R>,
    options?: { readonly concurrency?: Concurrency | undefined }
  ): (elements: Iterable<A>) => Effect<[excluded: Array<E>, satisfying: Array<B>], never, R>
  <A, B, E, R>(
    elements: Iterable<A>,
    f: (a: A, i: number) => Effect<B, E, R>,
    options?: { readonly concurrency?: Concurrency | undefined }
  ): Effect<[excluded: Array<E>, satisfying: Array<B>], never, R>
} = internal.partition