Hyperlinkv0.8.0-beta.28

TxHashSet

TxHashSet.unionconsteffect/TxHashSet.ts:533
<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 union of two TxHashSets, returning a new TxHashSet.

Example (Combining sets with union)

import { Effect, TxHashSet } from "effect"

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

  const values = yield* TxHashSet.toHashSet(combined)
  console.log(Array.from(values).sort()) // ["a", "b", "c"]
  console.log(yield* TxHashSet.size(combined)) // 3
})
combinators
export const union: {
  <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 combined = HashSet.union(set1, set2)
    return yield* fromHashSet(combined)
  }).pipe(Effect.tx))