簡體   English   中英

Cats - 當范圍內的Monad`實例時如何使用for -reherehe?

[英]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]

我可以通過定義flatMapmap方法來實現它:

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)
}

但是肯定有必要讓Cats提供這些方法嗎?

嘗試:

import cats.syntax.functor._, cats.syntax.flatMap._

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM