У меня есть следующий код:
def foo: OptionT[Future, String] = OptionT(Future.successful("foobar"))
def f: String => Option[Int] = s => Some(s.length)
Я ищу что-то в библиотеке скалаза, которая составляет f после foo, но в OptionT
(flatMap
и есть только две реализации flatMap)flatMapF
), и ни одна из них не имеет подписи, которую я ищу (A => Option[B])
.
Я могу легко реализовать ее самостоятельно, например, OptionT(foo.run.map(_.flatMap(f)))
для любого Functor
F или foo.flatMap(e => Future.succesful(f(e)))
для будущегоконкретно (или любой Applicative
в этом отношении), но почему этот метод отсутствует в первую очередь?Вроде бы довольно базовый функционал.Есть ли импорт, который мне не хватает, или другое место в библиотеке скалаза, где реализована эта функциональность?
Спасибо
РЕДАКТИРОВАТЬ: я вижу, что Cats включает этот метод в subFlatMap
https://github.com/typelevel/cats/blob/master/core/src/main/scala/cats/data/OptionT.scala#L54.