addOrNegate
demo.add, with an Overflow turned into its sum, negated.
import { add } from "#codebase/demo"; import { catchTag, succeed } from "#codebase/effect/Effect"; import type { Effect } from "#codebase/effect/Effect"; export const addOrNegate = (a: number, b: number): Effect<number> => catchTag(add(a, b), "Overflow", (e) => succeed(-e.at))