I'm running into quite a few places where I have something akin to
def f(s: String): Option[Long] = ...
def g(l: Long): IO[Option[Wibble]] = ...
val a: IO[Option[Wibble]] = f(param).flatMap(g).sequence.map(_.join)
Seeing the .sequence.map(_.join)
repeated over and over is starting to bother me. Is there a more idiomatic way of accomplishing the same thing?