<const Elements extends ReadonlyArray<Equivalence.Equivalence<any>>>(
elements: Elements
): Equivalence.Equivalence<{
readonly [I in keyof Elements]: [Elements[I]] extends [
Equivalence.Equivalence<infer A>
]
? A
: never
}>Creates an Equivalence for tuples by comparing corresponding elements
using the provided per-position Equivalences. Two tuples are equivalent
when all their corresponding elements are equivalent.
When to use
Use when you need an Equivalence to compare tuples element-by-element.
Details
This is an alias of Equivalence.Tuple.
Example (Comparing tuples for equivalence)
import { Equivalence, Tuple } from "effect"
const eq = Tuple.makeEquivalence([
Equivalence.strictEqual<string>(),
Equivalence.strictEqual<number>()
])
console.log(eq(["Alice", 30], ["Alice", 30])) // true
console.log(eq(["Alice", 30], ["Bob", 30])) // falseinstancesmakeOrder
Source effect/Tuple.ts:5491 lines
export const const makeEquivalence: <
Elements extends ReadonlyArray<Equivalence<any>>
>(
elements: Elements
) => Equivalence<{
readonly [I in keyof Elements]: [
Elements[I]
] extends [Equivalence<infer A>]
? A
: never
}>
Creates an Equivalence for tuples by comparing corresponding elements
using the provided per-position Equivalences. Two tuples are equivalent
when all their corresponding elements are equivalent.
When to use
Use when you need an Equivalence to compare tuples element-by-element.
Details
This is an alias of Equivalence.Tuple.
Example (Comparing tuples for equivalence)
import { Equivalence, Tuple } from "effect"
const eq = Tuple.makeEquivalence([
Equivalence.strictEqual<string>(),
Equivalence.strictEqual<number>()
])
console.log(eq(["Alice", 30], ["Alice", 30])) // true
console.log(eq(["Alice", 30], ["Bob", 30])) // false
makeEquivalence = import EquivalenceEquivalence.Tuple