2017-11-16 6 views
0

아래의 방법으로 M 유형의 이해력을 어떻게 사용할 수 있습니까?고양이 - 범위에`Monad` 인스턴스가있을 때 for-comprehension을 사용하는 방법?

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

그러나 확실히 고양이에 대한 방법이 있어야합니다 :

def foo[M[_]: Monad](m1: M[Int], m2: M[Int]) = 
    for { 
    a <- m1 
    b <- m2 
    } yield (a + b) 

나는 그렇게 같은 flatMapmap 방법을 정의하여 작업 할 수 있습니다

value flatMap is not a member of type parameter M[Int] 

A는거야 이러한 방법을 제공합니까?

답변

4

시도 :

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

감사합니다. 'cats.implicits._'를 가져 왔지만, 실패 할 때 전에 뭔가를 엉망으로 만들었어야합니다. 이제 작동 중입니다. 감사! – Samuel