猫 - 当 `Monad` 实例在范围内时如何使用 for-comprehension?
Cats - how to use for-comprehension when `Monad` instance in scope?
如何在下面的方法中对类型 M
使用 for-comprehension?
def foo[M[_]: Monad](m1: M[Int], m2: M[Int]) =
for {
a <- m1
b <- m2
} yield (a + b)
我会得到一个
value flatMap is not a member of type parameter M[Int]
我可以通过定义 flatMap
和 map
方法使其工作,如下所示:
implicit class MOps[A](m: M[A])(implicit monad: Monad[M]) {
def flatMap[B](f: A => M[B]): M[B] = monad.flatMap(m)(f)
def map[B](f: A => B): M[B] = monad.map(m)(f)
}
但猫一定有办法提供这些方法吗?
尝试:
import cats.syntax.functor._, cats.syntax.flatMap._
如何在下面的方法中对类型 M
使用 for-comprehension?
def foo[M[_]: Monad](m1: M[Int], m2: M[Int]) =
for {
a <- m1
b <- m2
} yield (a + b)
我会得到一个
value flatMap is not a member of type parameter M[Int]
我可以通过定义 flatMap
和 map
方法使其工作,如下所示:
implicit class MOps[A](m: M[A])(implicit monad: Monad[M]) {
def flatMap[B](f: A => M[B]): M[B] = monad.flatMap(m)(f)
def map[B](f: A => B): M[B] = monad.map(m)(f)
}
但猫一定有办法提供这些方法吗?
尝试:
import cats.syntax.functor._, cats.syntax.flatMap._