Hyperlinkv0.8.0-beta.28

TxHashSet

TxHashSet.isSubsetconsteffect/TxHashSet.ts:657
<V1>(that: TxHashSet<V1>): <V0>(
  self: TxHashSet<V0>
) => Effect.Effect<boolean>
<V0, V1>(self: TxHashSet<V0>, that: TxHashSet<V1>): Effect.Effect<boolean>

Checks whether a TxHashSet is a subset of another TxHashSet.

Example (Checking subset relationships)

import { Effect, TxHashSet } from "effect"

const program = Effect.gen(function*() {
  const small = yield* TxHashSet.make("a", "b")
  const large = yield* TxHashSet.make("a", "b", "c", "d")
  const other = yield* TxHashSet.make("x", "y")

  console.log(yield* TxHashSet.isSubset(small, large)) // true
  console.log(yield* TxHashSet.isSubset(large, small)) // false
  console.log(yield* TxHashSet.isSubset(small, other)) // false
  console.log(yield* TxHashSet.isSubset(small, small)) // true
})
elements
export const isSubset: {
  <V1>(that: TxHashSet<V1>): <V0>(self: TxHashSet<V0>) => Effect.Effect<boolean>
  <V0, V1>(self: TxHashSet<V0>, that: TxHashSet<V1>): Effect.Effect<boolean>
} = dual<
  <V1>(that: TxHashSet<V1>) => <V0>(self: TxHashSet<V0>) => Effect.Effect<boolean>,
  <V0, V1>(self: TxHashSet<V0>, that: TxHashSet<V1>) => Effect.Effect<boolean>
>(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)
    return HashSet.isSubset(set1, set2)
  }).pipe(Effect.tx))