// safeAdd :: Option<number> -> Option<number> -> Option<number>
const safeAdd = (x: number | null, y: number | null) =>
pipe(
Option.some(Number.sum),
Option.ap(Option.fromNullable(x)),
Option.ap(Option.fromNullable(y))
)
expect(safeAdd(2, 3)).toEqual(Option.some(5))
expect(safeAdd(null, 3)).toEqual(Option.some(3))
// safeAdd :: Option<number> -> Option<number> -> Option<number>
const safeAdd = (x: number | null, y: number | null) =>
pipe(
Option.some(Number.sum),
Option.ap(Option.fromNullable(x)),
Option.ap(Option.fromNullable(y))
)
expect(safeAdd(2, 3)).toEqual(Option.some(5))
expect(safeAdd(null, 3)).toEqual(Option.some(3))