Hyperlinkv0.8.0-beta.28

TxPriorityQueue

TxPriorityQueue.retainIfconsteffect/TxPriorityQueue.ts:519
<A>(predicate: Predicate<A>): (
  self: TxPriorityQueue<A>
) => Effect.Effect<void>
<A>(
  self: TxPriorityQueue<A>,
  predicate: Predicate<A>
): Effect.Effect<void>

Keeps only elements matching the predicate.

Example (Retaining matching values)

import { Effect, Order, TxPriorityQueue } from "effect"

const program = Effect.gen(function*() {
  const pq = yield* TxPriorityQueue.fromIterable(Order.Number, [1, 2, 3, 4, 5])
  yield* TxPriorityQueue.retainIf(pq, (n) => n % 2 === 0)
  const all = yield* TxPriorityQueue.takeAll(pq)
  console.log(all) // [2, 4]
})
filtering
export const retainIf: {
  <A>(predicate: Predicate<A>): (self: TxPriorityQueue<A>) => Effect.Effect<void>
  <A>(self: TxPriorityQueue<A>, predicate: Predicate<A>): Effect.Effect<void>
} = dual(
  2,
  <A>(self: TxPriorityQueue<A>, predicate: Predicate<A>): Effect.Effect<void> =>
    TxRef.update(self.ref, (chunk) => C.filter(chunk, predicate))
)