export const mapNoneError = dual<
<A, E1, E2, R>(
onNone: () => E2,
) => (
effect: Effect.Effect<Option.Option<A>, E1, R>,
) => Effect.Effect<A, E1 | E2, R>,
<A, E1, E2, R>(
effect: Effect.Effect<Option.Option<A>, E1, R>,
onNone: () => E2,
) => Effect.Effect<A, E1 | E2, R>
>(
2,
<A, E1, E2, R>(
effect: Effect.Effect<Option.Option<A>, E1, R>,
onNone: () => E2,
): Effect.Effect<A, E1 | E2, R> =>
Effect.flatMap(
effect,
Option.match({
onNone: () => Effect.fail(onNone()),
onSome: Effect.succeed,
}),
),
);
export const mapNoneError = dual<
<A, E1, E2, R>(
onNone: () => E2,
) => (
effect: Effect.Effect<Option.Option<A>, E1, R>,
) => Effect.Effect<A, E1 | E2, R>,
<A, E1, E2, R>(
effect: Effect.Effect<Option.Option<A>, E1, R>,
onNone: () => E2,
) => Effect.Effect<A, E1 | E2, R>
>(
2,
<A, E1, E2, R>(
effect: Effect.Effect<Option.Option<A>, E1, R>,
onNone: () => E2,
): Effect.Effect<A, E1 | E2, R> =>
Effect.flatMap(
effect,
Option.match({
onNone: () => Effect.fail(onNone()),
onSome: Effect.succeed,
}),
),
);