Home >Web Front-end >JS Tutorial >Using do Notation in Effect-TS Optionals
Effect-TS provides a powerful way to handle operations within the Option context using the do notation. This article explores how to sequence multiple operations with do notation and demonstrates various scenarios through examples.
In this example, we bind values within the Option context, compute a sum, and filter based on a condition.
import { Option as O, pipe } from 'effect'; function do_ex01() { const result = pipe( O.Do, O.bind('x', () => O.some(2)), // Bind x to the value 2 wrapped in Some O.bind('y', () => O.some(3)), // Bind y to the value 3 wrapped in Some O.let('sum', ({ x, y }) => x + y), // Let sum be the sum of x and y O.filter(({ x, y }) => x * y > 5) // Filter the result if x * y > 5 ); console.log(result); // Output: Some({ x: 2, y: 3, sum: 5 }) (since 2 * 3 > 5) }
Explanation:
The output is Some({ x: 2, y: 3, sum: 5 }) because the condition 2 * 3 > 5 is met.
This example shows that if the filter condition fails, the result is None.
function do_ex02() { const result = pipe( O.Do, O.bind('x', () => O.some(1)), // Bind x to the value 1 wrapped in Some O.bind('y', () => O.some(2)), // Bind y to the value 2 wrapped in Some O.let('sum', ({ x, y }) => x + y), // Let sum be the sum of x and y O.filter(({ x, y }) => x * y > 5) // Filter the result if x * y > 5 ); console.log(result); // Output: None (since 1 * 2 <= 5) }
Explanation:
The output is None because the condition 1 * 2 <= 5 fails.
This example demonstrates that if any binding is None, the result is None.
function do_ex03() { const result = pipe( O.Do, O.bind('x', () => O.some(2)), // Bind x to the value 2 wrapped in Some O.bind('y', () => O.none()), // Bind y to None O.let('sum', ({ x, y }) => x + y), // This line won't execute since y is None O.filter(({ x, y }) => x * y > 5) // This line won't execute since y is None ); console.log(result); // Output: None (since y is `None`) } </p>
Explanation:
The output is None because one of the bindings (y) isNone`.
The do notation in Effect-TS allows for elegant and readable sequencing of operations within the Option context. By binding values, letting computed values, and filtering based on conditions, we can handle complex optional logic in a straightforward manner. The examples above illustrate how the result changes based on different conditions and the presence of None.
The above is the detailed content of Using do Notation in Effect-TS Optionals. For more information, please follow other related articles on the PHP Chinese website!