Hyperlinkv0.8.0-beta.28

Equivalence

Equivalence.makeReducerfunctioneffect/Equivalence.ts:811
<A>(): Reducer.Reducer<Equivalence<A>>

Creates a Reducer for combining Equivalence instances, useful for aggregating equivalences in collections.

When to use

Use when you need a reducer that combines equivalences.

Details

Returns a reducer that combines equivalences using combine. The identity element for empty collections is an equivalence that always returns true. The reducer uses combineAll for collections of equivalences and can be used with fold operations.

Example (Creating a Reducer)

import { Equivalence } from "effect"

const reducer = Equivalence.makeReducer<number>()
const equivalences = [
  Equivalence.strictEqual<number>(),
  Equivalence.make<number>((a, b) => Math.abs(a - b) < 1)
]

const combined = reducer.combineAll(equivalences)
// Combined equivalence requires both conditions to be true
console.log(combined(1, 1)) // true (strict equal)
console.log(combined(1, 1.5)) // false (strict equal fails)
constructorscombinecombineAllReducer
export function makeReducer<A>() {
  return Reducer.make<Equivalence<A>>(
    combine,
    () => true,
    combineAll
  )
}