| 17 | export type { Effect } from "effect/Effect" |
| 18 | |
| 19 | export function flatMapOption<R, E, A, R2, E2, A2>( |
| 20 | self: Effect.Effect<Option.Option<A>, E, R>, |
| 21 | fm: (a: A) => Effect.Effect<A2, E2, R2> |
| 22 | ): Effect.Effect<Option.Option<A2>, E | E2, R | R2> { |
| 23 | return Effect.flatMap(self, (d) => |
| 24 | Option.match(d, { |
| 25 | onNone: () => Effect.sync(() => Option.none()), |
| 26 | onSome: (_) => Effect.map(fm(_), Option.some) |
| 27 | })) |
| 28 | } |
| 29 | |
| 30 | export function tapOption<R, E, A, R2, E2, A2>( |
| 31 | self: Effect.Effect<Option.Option<A>, E, R>, |