Composing Effects in fp-ts: Swapping Option<Effect<X>> with Effect<Option<X>>
in fp-ts is something like Option.sequence(Effect.Applicative) in order to "swap" the typeclass Option<Effect<X>> with Effect<Option<X>>
function program<A, B>(
effect: Effect.Effect<never, never, Option.Option<A>>,
f: (a: A) => Effect.Effect<never, never, B>
): Effect.Effect<never, never, Option.Option<B>> {
return effect.pipe((a) => hole());
}