Hyperlinkv0.8.0-beta.28

TxHashSet

TxHashSet.intersectionconsteffect/TxHashSet.ts:574
<V1>(that: TxHashSet<V1>): <V0>(
  self: TxHashSet<V0>
) => Effect.Effect<TxHashSet<V1 & V0>>
<V0, V1>(self: TxHashSet<V0>, that: TxHashSet<V1>): Effect.Effect<
  TxHashSet<V0 & V1>
>

Creates the intersection of two TxHashSets, returning a new TxHashSet.

Example (Finding common values)

import { Effect, TxHashSet } from "effect"

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

  const values = yield* TxHashSet.toHashSet(common)
  console.log(Array.from(values).sort()) // ["b", "c"]
  console.log(yield* TxHashSet.size(common)) // 2
})
combinators
export const intersection: {
  <V1>(that: TxHashSet<V1>): <V0>(self: TxHashSet<V0>) => Effect.Effect<TxHashSet<V1 & V0>>
  <V0, V1>(self: TxHashSet<V0>, that: TxHashSet<V1>): Effect.Effect<TxHashSet<V0 & V1>>
} = dual<
  <V1>(
    that: TxHashSet<V1>
  ) => <V0>(self: TxHashSet<V0>) => Effect.Effect<TxHashSet<V1 & V0>>,
  <V0, V1>(
    self: TxHashSet<V0>,
    that: TxHashSet<V1>
  ) => Effect.Effect<TxHashSet<V0 & V1>>
>(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 common = HashSet.intersection(set1, set2)
    return yield* fromHashSet(common)
  }).pipe(Effect.tx))