Hyperlinkv0.8.0-beta.28

Chunk

Chunk.partitionconsteffect/Chunk.ts:1777
<A, Pass, Fail>(
  f: (input: NoInfer<A>, i: number) => Result<Pass, Fail>
): (self: Chunk<A>) => [excluded: Chunk<Fail>, satisfying: Chunk<Pass>]
<A, Pass, Fail>(
  self: Chunk<A>,
  f: (input: A, i: number) => Result<Pass, Fail>
): [excluded: Chunk<Fail>, satisfying: Chunk<Pass>]

Splits a chunk using a Filter into failures and successes.

Details

Returns [excluded, satisfying]. The filter receives (element, index).

Example (Partitioning with a Result)

import { Chunk, Result } from "effect"

const [excluded, satisfying] = Chunk.partition(Chunk.make(1, -2, 3), (n, i) =>
  n > 0 ? Result.succeed(n + i) : Result.fail(`negative:${n}`)
)

console.log(Chunk.toArray(excluded)) // ["negative:-2"]
console.log(Chunk.toArray(satisfying)) // [1, 5]
filtering
Source effect/Chunk.ts:177718 lines
export const partition: {
  <A, Pass, Fail>(
    f: (input: NoInfer<A>, i: number) => Result<Pass, Fail>
  ): (self: Chunk<A>) => [excluded: Chunk<Fail>, satisfying: Chunk<Pass>]
  <A, Pass, Fail>(
    self: Chunk<A>,
    f: (input: A, i: number) => Result<Pass, Fail>
  ): [excluded: Chunk<Fail>, satisfying: Chunk<Pass>]
} = dual(
  2,
  <A, Pass, Fail>(
    self: Chunk<A>,
    f: (input: A, i: number) => Result<Pass, Fail>
  ): [excluded: Chunk<Fail>, satisfying: Chunk<Pass>] => {
    const [excluded, satisfying] = RA.partition(self, f)
    return [fromArrayUnsafe(excluded), fromArrayUnsafe(satisfying)]
  }
)