Hyperlinkv0.8.0-beta.28

TxHashSet

TxHashSet.differenceconsteffect/TxHashSet.ts:615
<V1>(that: TxHashSet<V1>): <V0>(
  self: TxHashSet<V0>
) => Effect.Effect<TxHashSet<V0>>
<V0, V1>(self: TxHashSet<V0>, that: TxHashSet<V1>): Effect.Effect<
  TxHashSet<V0>
>

Creates the difference of two TxHashSets (elements in the first set that are not in the second), returning a new TxHashSet.

Example (Finding values absent from another set)

import { Effect, TxHashSet } from "effect"

const program = Effect.gen(function*() {
  const set1 = yield* TxHashSet.make("a", "b", "c")
  const set2 = yield* TxHashSet.make("b", "d")
  const diff = yield* TxHashSet.difference(set1, set2)

  const values = yield* TxHashSet.toHashSet(diff)
  console.log(Array.from(values).sort()) // ["a", "c"]
  console.log(yield* TxHashSet.size(diff)) // 2
})
combinators
export const difference: {
  <V1>(that: TxHashSet<V1>): <V0>(self: TxHashSet<V0>) => Effect.Effect<TxHashSet<V0>>
  <V0, V1>(self: TxHashSet<V0>, that: TxHashSet<V1>): Effect.Effect<TxHashSet<V0>>
} = dual<
  <V1>(
    that: TxHashSet<V1>
  ) => <V0>(self: TxHashSet<V0>) => Effect.Effect<TxHashSet<V0>>,
  <V0, V1>(
    self: TxHashSet<V0>,
    that: TxHashSet<V1>
  ) => Effect.Effect<TxHashSet<V0>>
>(2, <V0, V1>(self: TxHashSet<V0>, that: TxHashSet<V1>) =>
  Effect.gen(function*() {
    const set1 = yield* TxRef.get(self.ref)
    const set2 = yield* TxRef.get(that.ref)
    const diff = HashSet.difference(set1, set2)
    return yield* fromHashSet(diff)
  }).pipe(Effect.tx))