Hyperlinkv0.8.0-beta.28

Effect

Effect.findFirstconsteffect/Effect.ts:661
<A, E, R>(
  predicate: (a: NoInfer<A>, i: number) => Effect<boolean, E, R>
): (elements: Iterable<A>) => Effect<Option<A>, E, R>
<A, E, R>(
  elements: Iterable<A>,
  predicate: (a: NoInfer<A>, i: number) => Effect<boolean, E, R>
): Effect<Option<A>, E, R>

Returns the first element that satisfies an effectful predicate.

Details

The predicate receives the element and its index. Evaluation short-circuits as soon as an element matches.

Example (Finding the first successful match)

import { Effect } from "effect"

const program = Effect.findFirst([1, 2, 3, 4], (n) => Effect.succeed(n > 2))

Effect.runPromise(program).then(console.log)
// { _id: 'Option', _tag: 'Some', value: 3 }
collecting
Source effect/Effect.ts:6619 lines
export const findFirst: {
  <A, E, R>(
    predicate: (a: NoInfer<A>, i: number) => Effect<boolean, E, R>
  ): (elements: Iterable<A>) => Effect<Option<A>, E, R>
  <A, E, R>(
    elements: Iterable<A>,
    predicate: (a: NoInfer<A>, i: number) => Effect<boolean, E, R>
  ): Effect<Option<A>, E, R>
} = internal.findFirst