0

首先,我有一个案例类定义为(这是库的一部分):

final case class Abstraction[A](
    result: Either[AbError, A],
    status: Int,
    info: Map[String, String]
)

我想将它用作折叠的主要组件,以便从 List[IO[Abstraction[List[A]]]] 转到 IO[Abstraction[List[A]]]。

当我阅读时,我想将其作为 Monoid 的一个实例来定义合并最终结果的行为。

我的提议如下,但我知道它有错误,因为我没有很好地掌握它。

implicit val instanceabstaction : Monoid[Abstraction[A]] = new Monoid[Abstraction[A]] = {

    def empty: Abstraction[A] = Abstraction(Either.empty[AbError, A] , 0 , Map.empty[String, String])
    def combine(x: Abstraction[A], y: Abstraction[A]): Int = x ++ y
  }

如果有任何其他方法可以实现这一目标,我愿意接受建议

4

0 回答 0