Hyperlinkv0.8.0-beta.28

Option

Option.makeEquivalenceconsteffect/Option.ts:2065
<A>(isEquivalent: Equivalence.Equivalence<A>): Equivalence.Equivalence<
  Option<A>
>

Creates an Equivalence for Option<A> from an Equivalence for A.

When to use

Use when you need equality to treat two None values as equal and compare two Some values with a supplied equality rule.

Details

  • None vs Nonetrue
  • Some vs None (or vice versa) → false
  • Some(a) vs Some(b) → delegates to the provided Equivalence

Example (Comparing Options)

import { Equivalence, Option } from "effect"

const eq = Option.makeEquivalence(Equivalence.strictEqual<number>())

console.log(eq(Option.some(1), Option.some(1)))
// Output: true

console.log(eq(Option.some(1), Option.some(2)))
// Output: false

console.log(eq(Option.none(), Option.none()))
// Output: true
instances
Source effect/Option.ts:20652 lines
export const makeEquivalence = <A>(isEquivalent: Equivalence.Equivalence<A>): Equivalence.Equivalence<Option<A>> =>
  Equivalence.make((x, y) => isNone(x) ? isNone(y) : isNone(y) ? false : isEquivalent(x.value, y.value))
Referenced by 1 symbols