Есть ли более идиоматический способ получения ввода-вывода [Option [ A]] из Option [IO [Option [A]], затем с помощью соединения последовательности и сопоставления?

Я бегу во многих местах, где у меня есть что-то вроде

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)

. Наблюдение .sequence.map (_. join) , повторяющееся снова и снова, начинает меня беспокоить. Есть ли более идиоматический способ сделать то же самое?

7
задан rwallace 11 January 2012 в 23:54
поделиться