ScalaZ: отсутствует базовый метод flatMap для монадных трансформаторов? (SubFlatMap)
У меня есть следующий код:
def foo: OptionT[Future, String] = OptionT(Future.successful("foobar"))
def f: String => Option[Int] = s => Some(s.length)
Я ищу что-то в библиотеке скалаза, которая составляет f после foo, но есть только две реализации flatMap в OptionT
(flatMap
а также flatMapF
), и ни одна из них не имеет подписи, которую я ищу (A => Option[B])
,
Я могу реализовать это сам легко, например, OptionT(foo.run.map(_.flatMap(f)))
для любого Functor
За 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.