addOrNegate

demo.addOrNegate · #mwxeyuhr · term · runs anywhere

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))

uses

used by