ScalaZ:缺少monad变压器的基本flatMap方法? (subFlatMap)

时间:2018-09-17 18:10:15

标签: scala monads scalaz monad-transformers

我有以下代码:

def foo: OptionT[Future, String] = OptionT(Future.successful("foobar"))
def f: String => Option[Int] = s => Some(s.length)

我正在scalaz库中寻找在foo之后组成f的内容,但是OptionTflatMapflatMapF)中只有两个flatMap实现,而两者都没有我正在寻找(A => Option[B])的签名。

我可以很容易地自己实现它,例如,对于任何OptionT(foo.run.map(_.flatMap(f))) F来说,Functor,或者对于Future而言,foo.flatMap(e => Future.succesful(f(e))),或者对此特别是Applicative来说,都是如此,该方法首先丢失了吗?这似乎是非常基本的功能。是我缺少的导入文件,还是在scalaz库中的其他地方实现了此功能?

谢谢

编辑:我看到Cats在subFlatMap https://github.com/typelevel/cats/blob/master/core/src/main/scala/cats/data/OptionT.scala#L54下包含了此方法。

0 个答案:

没有答案