我正在尝试了解一个折叠示例。
val rowStream: Stream[IO, Rows] = ...
rowStream.fold(Right(()): Either[RowError, Unit]) {
case (Right(_), b) =>
// completely succeed here
//b.rows... etc
case (Left(_), _) =>
// Fail with Left(RowError)
}
在case (Right(_), b) =>
中,b
是什么?难道不应该只是通过Right()
吗?以及如何允许b
通过案件?
我是说Right(())
传递的fold
是折叠初始值,设置为单位的Right
吗?