У меня есть следующий кодscalaz Складная Compose
val listOption: List[Option[Int]] = List(1.some, none, 2.some)
я хочу складывать элементы, я пишу следующий код
val result = listx.fold(0.some)((acc, el) => {
(acc, el) match {
case (Some(a), Some(b)) => Some(a + b)
case (Some(a), _) => Some(a)
case (_, Some(b)) => Some(b)
case _ => el
}
})
println(result.getOrElse(0)) // => 3
это workds хорошо, но я вижу в источниках scalaz следующий Tric
val composeFold = Foldable[List] compose Foldable[Option]
composeFold.fold(listOption) // => 3
Но я не понимаю, как это исправить работу, и почему scalaz не смешивает эти методы с экземпляром listOption
и какие differenct между Скале fold
и scalaz fold
'concatenate' из FoldableSyntax, но в источниках я вижу FoldableSyntax имеют метод fold:' final def fold (неявный A: Monoid [A]): A = F.fold (self) (A) 'как я могу позвонить fold в складном синтаксисе вместо складки из scala? – lito