首先,我有一个案例类定义为(这是库的一部分):
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
}
如果有任何其他方法可以实现这一目标,我愿意接受建议