Hyperlinkv0.8.0-beta.28

Array

Array.takeWhileFilterconsteffect/Array.ts:1404
<A, B, X>(f: (input: NoInfer<A>, i: number) => Result.Result<B, X>): (
  self: Iterable<A>
) => Array<B>
<A, B, X>(
  self: Iterable<A>,
  f: (input: NoInfer<A>, i: number) => Result.Result<B, X>
): Array<B>

Takes elements from the start while a Filter succeeds, collecting transformed values.

When to use

Use when you need to take a prefix from an iterable while a function can successfully extract or transform elements, stopping at the first element that produces a failure result.

Details

The filter receives (element, index) and processing stops at the first filter failure.

getterstakeWhile
Source effect/Array.ts:140416 lines
export const takeWhileFilter: {
  <A, B, X>(f: (input: NoInfer<A>, i: number) => Result.Result<B, X>): (self: Iterable<A>) => Array<B>
  <A, B, X>(self: Iterable<A>, f: (input: NoInfer<A>, i: number) => Result.Result<B, X>): Array<B>
} = dual(2, <A, B, X>(self: Iterable<A>, f: (input: NoInfer<A>, i: number) => Result.Result<B, X>): Array<B> => {
  let i = 0
  const out: Array<B> = []
  for (const a of self) {
    const result = f(a, i)
    if (Result.isFailure(result)) {
      break
    }
    out.push(result.success)
    i++
  }
  return out
})