(self: number, that: number): booleanEquivalence instance for numbers where NaN is considered equal to NaN.
When to use
Use when checking numeric equality through APIs that accept an equivalence relation.
Example (Comparing numbers for equivalence)
import { Number } from "effect"
console.log(Number.Equivalence(1, 1)) // true
console.log(Number.Equivalence(1, 2)) // false
console.log(Number.Equivalence(NaN, NaN)) // trueexport const const Equivalence: Equ.Equivalence<number>Equivalence instance for numbers where NaN is considered equal to NaN.
When to use
Use when checking numeric equality through APIs that accept an equivalence
relation.
Example (Comparing numbers for equivalence)
import { Number } from "effect"
console.log(Number.Equivalence(1, 1)) // true
console.log(Number.Equivalence(1, 2)) // false
console.log(Number.Equivalence(NaN, NaN)) // true
Equivalence: import EquEqu.type Equivalence<in A> = (
self: A,
that: A
) => boolean
Represents an equivalence relation over type A.
When to use
Use as a type annotation when you accept or return an equivalence function.
Details
- Returns
boolean: true if values are equivalent, false otherwise
- Must satisfy reflexive, symmetric, and transitive properties
Example (Defining simple number equivalence)
import type { Equivalence } from "effect"
const numberEq: Equivalence.Equivalence<number> = (a, b) => a === b
console.log(numberEq(1, 1)) // true
console.log(numberEq(1, 2)) // false
Example (Defining custom object equivalence)
import type { Equivalence } from "effect"
interface Point {
x: number
y: number
}
const pointEq: Equivalence.Equivalence<Point> = (a, b) =>
a.x === b.x && a.y === b.y
console.log(pointEq({ x: 1, y: 2 }, { x: 1, y: 2 })) // true
Equivalence<number> = import EquEqu.const Number: Equivalence<number>Equivalence instance for numbers.
When to use
Use when you need numeric equality that treats NaN as equal to itself.
Example (Comparing numbers)
import { Equivalence } from "effect"
console.log(Equivalence.Number(1, 1)) // true
console.log(Equivalence.Number(1, 2)) // false
console.log(Equivalence.Number(NaN, NaN)) // true
Number