<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
NonevsNone→trueSomevsNone(or vice versa) →falseSome(a)vsSome(b)→ delegates to the providedEquivalence
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: trueexport const const makeEquivalence: <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 None → true
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
makeEquivalence = <function (type parameter) A in <A>(isEquivalent: Equivalence.Equivalence<A>): Equivalence.Equivalence<Option<A>>A>(isEquivalent: Equivalence.Equivalence<A>isEquivalent: import EquivalenceEquivalence.type Equivalence.Equivalence = /*unresolved*/ anyEquivalence<function (type parameter) A in <A>(isEquivalent: Equivalence.Equivalence<A>): Equivalence.Equivalence<Option<A>>A>): import EquivalenceEquivalence.type Equivalence.Equivalence = /*unresolved*/ anyEquivalence<type Option<A> = None<A> | Some<A>The Option data type represents optional values. An Option<A> is either
Some<A>, containing a value of type A, or None, representing absence.
When to use
Use to represent initial values that may not yet exist
- Returning from partial functions (not defined for all inputs)
- Managing optional fields in data structures
Namespace containing utility types for Option.
When to use
Use to access type-level helpers associated with Option.
Option<function (type parameter) A in <A>(isEquivalent: Equivalence.Equivalence<A>): Equivalence.Equivalence<Option<A>>A>> =>
import EquivalenceEquivalence.make((x: Option<A>x, y: Option<A>y) => const isNone: <A>(
self: Option<A>
) => self is None<A>
Checks whether an Option is None (absent).
When to use
Use when you need to branch on an absent Option before accessing .value.
Details
- Acts as a type guard, narrowing to
None<A>
Example (Checking for None)
import { Option } from "effect"
console.log(Option.isNone(Option.some(1)))
// Output: false
console.log(Option.isNone(Option.none()))
// Output: true
isNone(x: Option<A>x) ? const isNone: <A>(
self: Option<A>
) => self is None<A>
Checks whether an Option is None (absent).
When to use
Use when you need to branch on an absent Option before accessing .value.
Details
- Acts as a type guard, narrowing to
None<A>
Example (Checking for None)
import { Option } from "effect"
console.log(Option.isNone(Option.some(1)))
// Output: false
console.log(Option.isNone(Option.none()))
// Output: true
isNone(y: Option<A>y) : const isNone: <A>(
self: Option<A>
) => self is None<A>
Checks whether an Option is None (absent).
When to use
Use when you need to branch on an absent Option before accessing .value.
Details
- Acts as a type guard, narrowing to
None<A>
Example (Checking for None)
import { Option } from "effect"
console.log(Option.isNone(Option.some(1)))
// Output: false
console.log(Option.isNone(Option.none()))
// Output: true
isNone(y: Option<A>y) ? false : isEquivalent: Equivalence.Equivalence<A>isEquivalent(x: Some<A>(parameter) x: {
_tag: "Some";
_op: "Some";
value: A;
valueOrUndefined: A;
pipe: { <A>(this: A): A; <A, B = never>(this: A, ab: (_: A) => B): B; <A, B = never, C = never>(this: A, ab: (_: A) => B, bc: (_: B) => C): C; <A, B = never, C = never, D = never>(this: A, ab: (_: A) => B, bc: (_: B) => C, cd: (_: C) => D): D; <…;
toString: () => string;
toJSON: () => unknown;
}
x.value, y: Some<A>(parameter) y: {
_tag: "Some";
_op: "Some";
value: A;
valueOrUndefined: A;
pipe: { <A>(this: A): A; <A, B = never>(this: A, ab: (_: A) => B): B; <A, B = never, C = never>(this: A, ab: (_: A) => B, bc: (_: B) => C): C; <A, B = never, C = never, D = never>(this: A, ab: (_: A) => B, bc: (_: B) => C, cd: (_: C) => D): D; <…;
toString: () => string;
toJSON: () => unknown;
}
y.value))