Hyperlinkv0.8.0-beta.28

Record

Record.makeEquivalenceconsteffect/Record.ts:1428
<K extends string, A>(equivalence: Equivalence<A>): Equivalence<
  ReadonlyRecord<K, A>
>

Create an Equivalence for records using the provided Equivalence for values. Two records are considered equivalent if they have the same keys and their corresponding values are equivalent.

Example (Comparing records with a value equivalence)

import { Equal, Record } from "effect"
import * as assert from "node:assert"

const recordEquivalence = Record.makeEquivalence(Equal.asEquivalence<number>())

assert.deepStrictEqual(recordEquivalence({ a: 1, b: 2 }, { a: 1, b: 2 }), true)
assert.deepStrictEqual(recordEquivalence({ a: 1, b: 2 }, { a: 1, b: 3 }), false)
instances
Source effect/Record.ts:14286 lines
export const makeEquivalence = <K extends string, A>(
  equivalence: Equivalence<A>
): Equivalence<ReadonlyRecord<K, A>> => {
  const is = isSubrecordBy(equivalence)
  return (self, that) => is(self, that) && is(that, self)
}