ScalaZ: отсутствует базовый метод flatMap для монадных трансформаторов?(SubFlatMap) - PullRequest
0 голосов
/ 17 сентября 2018

У меня есть следующий код:

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.

...