는 잘 모르겠어요이 인스턴스가 제공 않는 A
가 모노 이드 인스턴스를 가지고 있으며, 범위 암시 실행 컨텍스트가 어디 Monoid[Future[A]]
. 당신은 쉽게 만들 수 있습니다 자신하지만, 중 단지 바로 하나를 정의하여 [이 실제로 원하는 의미가없는 것] IsomorphismMonoid
, 또는를 사용하여 Result
및 Future[Option[?]]
다음과 동형 사상을 정의하여 :
import scala.concurrent.ExecutionContext.Implicits.global
import scala.concurrent.Future
import scalaz._, Scalaz._
type Result[A] = OptionT[Future, A]
implicit def resultMonoid[A: Monoid]: Monoid[Result[A]] = new Monoid[Result[A]] {
def zero: Result[A] = Monoid[A].zero.point[Result]
def append(f1: Result[A], f2: => Result[A]): Result[A] = (f1 |@| f2)(_ |+| _)
}
그것은 가치가 무엇인지에 대한
scala> List(OptionT(Future(1.some)), OptionT(Future(2.some))).suml
res1: scalaz.OptionT[scala.concurrent.Future,Int] = OptionT(List())
scala> scala.concurrent.Await.result(res1.run, scala.concurrent.duration.Duration.Inf)
res2: Option[Int] = Some(3)
, Cats provides this instance하지만 (Scalaz의 Future[Option[?]]
경우 등)는 0123를 가지고 : 그리고 (Scalaz 자신의 suml
하지만 sum
가 잘 작동을 사용)을 ID로 사용하십시오.